【生信技能树】拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图?

拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图?

目录

预备知识

绘制箱线图示例


预备知识

1.pivot_longer函数

pivot_longer 是tidyr包中的一个函数,用于将数据框(data frame)从宽格式转换为长格式。在宽格式数据中,每个观测值可能是多列的行,而长格式数据则将这些多列转换为两列:一个包含观测值的变量,另一个包含相应的值。

以下是pivot_longer的基本语法和主要参数:

pivot_longer(data, cols, names_to = NULL, values_to = "value")
  • data:要转换的数据框。
  • cols:要转换为长格式的列,可以是一个单独的列名,也可以是一个包含多个列名的向量。可以使用c()函数来指定多个列。
  • names_to:新变量名称的列名。可以是一个字符串,或者一个包含字符串的向量,用于指定转换后的列名。
  • values_to:新数值列的列名,默认为"value"。

2.starts_with()函数

starts_with()是dplyr包中的函数,用于在数据操作中筛选出以特定字符串开始的列。

以下是starts_with()函数的基本语法和参数:

starts_with(x, prefix, ignore.case = FALSE)
  • x:一个字符向量,即你要检查的列。
  • prefix:一个字符串,表示你想要匹配的前缀。
  • ignore.case:一个逻辑值,指定是否忽略大小写进行匹配。默认为FALSE,即默认情况下是区分大小写的。

通常只需要传入参数prefix也就是想要匹配的前缀即可。这个函数不能单独使用,而是作为某些函数的参数来使用,单独使用会报这样的一个错误

说是这个函数必须配合一种selecting函数来使用,比如select函数,pivot_longer函数等。举个例子

select(df,starts_with("name"))

表示筛选出df数据框中有前缀是name的列,结果仍然是数据框。

绘制箱线图示例

首先运行代码

set.seed(10086)
exp<-matrix(round(rnorm(18),2),ncol = 6)
rownames(exp)<-paste0("gene",1:3)
colnames(exp)<-paste0("test",1:6)
exp[,1:3]<-exp[,1:3]+1

生成一个三行六列的矩阵,设置种子数是为了让产生的随机数可重复。然后对这个矩阵的行名和列名进行了修改。exp[,1:3]

其中行表示不同的基因,列表示不同的样本,对于这样一个矩阵,是不能扔到ggplot函数里面画箱线图的,因为首先函数要求的数据格式是数据框,我们得到的是矩阵,那是不是直接把这个表达矩阵转换成数据框就能扔进ggplot函数里面绘制箱线图了?我们先来看一下使用ggplot函数绘制箱线图的语法格式:

ggplot(数据框)+ geom_boxplot(aes(列名,列名))

基本的要求是数据框中两列的列名,第一个列名用作自变量(x),第二个列名用作因变量(y),再来看我们现在的矩阵,如果直接把他转换成数据框,其实内容没有变化,但是我们要怎么给geom_boxplot函数传参?传哪两列都不合适,正确处理方式如下:

1.使用t函数转置表达矩阵,并使用as.data.frame函数把这个矩阵转换成数据框。

2.使用rownames_to_column把原来的行名变成第一列,因为我们要根据基因名这一列和后面搞出来的表达量那列绘图。

3.使用mutate函数增加一列,通常命名为group,这一列的内容通常为健康和患病。这是为了在箱线图中显示图例。经过这一步之后我们的数据框如图,假设这个数据框名为dat,也可以不使用mutate函数,直接dat$group

4.使用pivot_longer函数把这个数据框“宽变长”,得到我们需要的数据框。所谓的宽变长是指:原来每个test都有其对应的gene1,2,3,现在我想要把带gene的这些列都合成一列,假设这一列叫做gene,同时要能够让test1,gene1唯一的确定一个基因表达量,就只能把test1,test2等等这些带test的每一个都变成三个,也就是下图中这样子

在这张表中我们仍然可以通过test1和gene1唯一的确定一个表达量,由于行数的变化,表达量也要用新的一列来存起来,比如表格里面的count就是我们新创建的一列。完成这一系列操作只需要使用一个函数,他就是 pivot_longer,这样传参

pdat<-dat%>%pivot_longer(cols = starts_with("gene"),names_to = "gene",values_to = "count")

管道符用于把前面的参数传到后面去,默认是传到后面函数的第一个参数位置上去。其中start_with("gene")是用来筛选出以gene开头的列,如果要筛选的基因没有这样gene1,gene2的,而是三个基因的名字,我们可以直接给cols参数写2:4,names_to=“gene”表示指定的这三列合成的新的那一列名字叫做gene,同时原来由test1和gene1这样的两个维度唯一确定的那些基因的表达量由于格式的变化也要创建新的一列来存起来,这一列我们给他起名为count。

5.使用ggplot函数绘制箱线图。

示例代码:

library(ggplot2)
ggplot(pdat,aes(gene,count))+geom_boxplot(aes(fill=group))

表示横坐标是gene这一列,纵坐标是count这一列,填充颜色由group这一列的取值来决定。

运行代码之后就绘制了这样一张图

最后送上完整源代码,可以直接运行

set.seed(10086)
exp<-matrix(round(rnorm(18),2),ncol = 6)
rownames(exp)<-paste0("gene",1:3)
colnames(exp)<-paste0("test",1:6)
exp[,1:3]<-exp[,1:3]+1
library(tidyr)
library(tibble)
library(dplyr)
dat<-t(exp)%>%as.data.frame()%>%rownames_to_column()%>%mutate(group=rep(c("control","treat"),each=3))
pdat<-dat%>%pivot_longer(cols = starts_with("gene"),names_to = "gene",values_to = "count")
library(ggplot2)
ggplot(pdat,aes(gene,count))+geom_boxplot(aes(fill=group))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文掌握gRPC

文章目录 1. gRPC简介2. Http2.0协议3. 序列化-Protobuf4. gRPC开发实战环境搭建5. gRPC的四种通信方式&#xff08;重点&#xff09;6. gRPC的代理方式7. SprintBoot整合gRPC 1. gRPC简介 gRPC是由google开源的高性能的RPC框架。它是由google的Stubby这样一个内部的RPC框架演…

Java日志总结

开发中&#xff0c;日志记录是不可或缺的一部分&#xff0c;应用日志的记录主要用于&#xff1a;记录操作轨迹数据、监控系统运行情况、系统故障定位问题&#xff0c;日志的重要性不言而喻&#xff0c;想要快速定位问题&#xff0c;日志分析是个重要的手段&#xff0c;Java也提…

JAVA 集合(单列集合)

集合框架 1.集合的特点 a.只能存储引用数据类型的数据 b.长度可变 c.集合中有大量的方法,方便我们操作 2.分类: a.单列集合:一个元素就一个组成部分: list.add(“张三”) b.双列集合:一个元素有两部分构成: key 和 value map.put(“涛哥”,“金莲”) -> key,value叫做键值…

锁和MVCC如何实现mysql的隔离级别

概述 MVCC解决读的隔离性&#xff0c;加锁解决写的隔离性。 读未提交 读未提交&#xff0c;更新数据大概率使用的是独享锁吧。 读已提交 在 Read Committed&#xff08;读已提交&#xff09;隔离级别下&#xff0c;每次执行读操作时都会生成一个新的 read view。这是因为在读…

AI 图像生成-环境配置

一、python环境安装 Windows安装Python&#xff08;图解&#xff09; 二、CUDA安装 CUDA安装教程&#xff08;超详细&#xff09;-CSDN博客 三、Git安装 git安装教程&#xff08;详细版本&#xff09;-CSDN博客 四、启动器安装 这里安装的是秋叶aaaki的安装包 【AI绘画…

【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影

参考阅读:ArcGIS实验教程——实验十:矢量数据投影变换 文章目录 一、加载实验数据二、设置输出坐标系三、数据导出一、加载实验数据 打开配套案例数据包中的data081.rar中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,数据的已有坐标系为WGS84地理坐标…

【3dmax笔记】021:对齐工具(快速对齐、法线对齐、对齐摄影机)

文章目录 一、对齐二、快速对齐三、法线对齐四、对齐摄影机五、注意事项3dmax提供了对齐、快速对齐、法线对齐和对齐摄像机等对齐工具: 对齐工具选项: 下面进行一一讲解。 一、对齐 快捷键为Alt+A,将当前选择对象与目标对象进行对齐。 最大对最大:

【小笔记】neo4j用load csv指令导入数据

【小笔记】neo4j用load csv指令导入数据 背景 很久没有用load CSV的方式导入过数据了因为它每次导入有数量限制&#xff08;印象中是1K还是1W&#xff09;&#xff0c;在企业中构建的图谱往往都是大规模的&#xff0c;此时通常采用的是Neo4j-admin import方式。最近遇到了一些…

振弦式表面应变计怎么安装

振弦式表面应变计是一种用于测量结构表面应变的高精度传感器&#xff0c;广泛应用于工程和科研领域。正确安装振弦式表面应变计对于确保测量结果的准确性至关重要。以下是安装振弦式表面应变计的步骤和注意事项&#xff1a; 1. 准备工作 在开始安装前&#xff0c;需要准备以下工…

whisper之初步使用记录

文章目录 前言 一、whisper是什么&#xff1f; 二、使用步骤 1.安装 2.python调用 3.识别效果评估 4.一点封装 5.参考链接 总结 前言 随着AI大模型的不断发展&#xff0c;语音识别等周边内容也再次引发关注&#xff0c;通过语音转文字再与大模型交互&#xff0c;从而…

【Gitlab远程访问本地仓库】Gitlab如何安装配置并结合内网穿透实现远程访问本地仓库进行管理

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xf…

为什么质量工程师必学六西格玛?突破职业发展的瓶颈?

在质量管理领域工作多年&#xff0c;你是否曾感受到事业发展的停滞不前&#xff1f;3年、5年的职业生涯&#xff0c;薪水依旧停留在每月5000-7000&#xff0c;而同行业的其他人却能月入2-3万&#xff0c;这种差距让人不禁陷入深思。 问题究竟出在哪里&#xff1f;为什么我们的…

揭秘图形编程 动静接口如何助力 AGV 集成

在公司软件开发团队的办公室里&#xff0c;阳光透过窗户洒在排列整齐的办公桌上。卧龙坐在办公桌前&#xff0c;面前摊开一份内测报告&#xff0c;他的手指时不时地敲击着桌面&#xff0c;流露出内心的烦躁。他抬起头&#xff0c;眼神中透露出一丝困惑&#xff0c;看向正在文件…

【网络安全】【Frida实践案例】某图xx付费功能逆向分析(一)

文章目录 一、目标应用二、环境三、步骤1、查看布局id2、用到的Log日志类信息3、尝试hook VIP判断方法 四、总结五、相关源码 1、文章仅供学习参考&#xff0c;严禁非法使用&#xff01;如非法使用&#xff0c;而导致的一切后果&#xff0c;由使用者自负&#xff01; 2、禁止将…

【C++】string类常用函数用法总结

目录 常用函数一览 默认成员函数 与容量有关的函数 part 1 part 2 part 3 与访问和遍历有关的函数 与修改有关的函数 npos 与string相关的其它常用函数 常用非成员函数 getline和cin的区别 常用函数一览 //默认成员函数 string();string(const char* s);string(si…

docker八大架构之应用服务集群架构

应用服务集群架构 在之前&#xff0c;一个应用层要负责所有的用户操作&#xff0c;但是有时用户增加后就会导致供不应求的现象&#xff08;单个应用不足以支持海量的并发请求&#xff0c;高并发的时候站点响应变慢&#xff09;&#xff0c;这时就需要增加应用层服务器&#xf…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构&#xff08;每一位的具体电路结构&#xff09; 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

【资源分享】完胜谷歌翻译的Deepl翻译

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【数据结构与算法】力扣 111. 二叉树的最小深度

题目描述 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a; 叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a; 2示例 2&#…

长事务的理解和预防

我们常常听说数据库发生了“长事务”而导致很严重的后果。那么何为长事务&#xff1f;长事务是如何产生的&#xff1f;长事务对数据库有什么影响&#xff1f;如何防止长事务的产生&#xff1f;以下对这几方面进行阐述和说明&#xff0c;以加深对SinoDB长事务的理解。 1&#x…