前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R绘图 | 表达矩阵画箱线图

R绘图 | 表达矩阵画箱线图

作者头像
小汪Waud
发布2023-02-16 16:44:28
2.1K0
发布2023-02-16 16:44:28
举报
文章被收录于专栏:小汪Waud

变量可以分为很多种,如连续变量、分类变量等。当数据集中包含了分类变量和连续变量时,我们想了解连续变量是怎样随着不同的分类变量水平变化而变化,这时散点图中则会出现大量重叠,而箱式图则可以更清晰的展示这类数据。

箱式图用于多组数据平均水平和变异程度的直观分析比较。每组数据均可呈现其最小值、最大值、平均水平,最小值、最大值形成间距都可以反映数据的变异程度。

主要函数为geom_boxplot()。

本期我们以表达矩阵为例来做箱式图。

1 原始数据

常规的表达矩阵每一行为一个基因,每一列为一个样本,如果拿到的数据不符合上述规则,首先需要对数据进行调整。

如果每一行为一个样本,每一列为一个基因则需要使用t()进行转置。

标准的表达矩阵如下所示

sample1

sample2

sample3

gene1

1.82

2.24

0.98

gene2

1.01

1.26

1.25

gene3

-2.31

-3.33

-2.14

接下来我们使用rnorm()生成一个表达矩阵。

代码语言:javascript
复制
set.seed(200) # 设定种子,保证每次rnorm运行的结果一样(保证结果可重复)
exp = matrix(rnorm(24),ncol = 8) # 随机产生24个数字,分布在8列
exp = round(exp,2) # 取两位小数
rownames(exp) = paste0("gene",1:3) 
colnames(exp) = paste0("sample",1:8)

2 数据处理

2.1 添加分组信息
代码语言:javascript
复制
library(tidyr)
library(tibble)
library(dplyr)
dat = t(exp) %>% # “%>%”为管道符,相当于linux中的“|”
  as.data.frame() %>%  # 只有数据框才能使用将行名变成一列的命令
  rownames_to_column() %>%  # 将行名变成一列
  mutate(group = rep(c("control","treatment"),each = 4)) # 新增group列

转置后的表达矩阵

2.2 宽数据转换长数据

宽数据是比较常用的数据收集与储存样式,而长数据常用于画图,此处我们采用pivot_longer()进行转换,更多宽变长方法可参考简书教程[1]

pivot_longer() "lengthens" data, increasing the number of rows and decreasing the number of columns.

代码语言:javascript
复制
pdat = pivot_longer(data = dat,
                    cols = starts_with("gene"), # 宽变长 选择以"gene"为开头的行
                    names_to = "gene", # 新的列名
                    values_to = "count") # 其余的列名

长数据

3 作图

代码语言:javascript
复制
library(ggplot2)
p = ggplot(pdat,aes(gene,count))+
  geom_boxplot(aes(fill = group))+ # 绘制箱线图
  geom_jitter()+ # 叠加扰动点图
  theme_bw() # 主题设置
p
p + facet_wrap(~gene,scales = "free") # 以gene分面

最后也可以采用我们上期提到的ggThemeAssitant进行美化。

参考资料

[1] 简书教程: https://www.jianshu.com/p/e941f12179f3

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小汪Waud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 原始数据
  • 2 数据处理
    • 2.1 添加分组信息
      • 2.2 宽数据转换长数据
      • 3 作图
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档