R绘图 | 表达矩阵画箱线图
2023-03-07 09:16:31 时间
变量可以分为很多种,如连续变量、分类变量等。当数据集中包含了分类变量和连续变量时,我们想了解连续变量是怎样随着不同的分类变量水平变化而变化,这时散点图中则会出现大量重叠,而箱式图则可以更清晰的展示这类数据。
箱式图用于多组数据平均水平和变异程度的直观分析比较。每组数据均可呈现其最小值、最大值、平均水平,最小值、最大值形成间距都可以反映数据的变异程度。
主要函数为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()生成一个表达矩阵。
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 添加分组信息
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.
pdat = pivot_longer(data = dat,
cols = starts_with("gene"), # 宽变长 选择以"gene"为开头的行
names_to = "gene", # 新的列名
values_to = "count") # 其余的列名
长数据
3 作图
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
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地