其他
R语言绘制分组柱状图示例
本文使用的作图数据的网盘链接(提取码 dhta):
https://pan.baidu.com/s/1q8pcBirz1riG4WWgO3el2w
某项研究通过16S高通量测序获得了细菌群落物种丰度数据。之后统计了其不同样本分组(group)中,主要细菌类群(taxonomy)的平均相对丰度(mean)以及相对丰度的标准误(se),同时计算了差异显著性(sign1、sign2),最后得到文件“stat.csv”。
我们期望通过柱状图,可视化统计结果。
ggplot2绘制分组柱状图
我们首先读取数据,将分组柱状图主体轮廓画出来。横坐标细菌类群,纵坐标相对丰度,并按分组列开。
library(ggplot2)#读取数据
stat <- read.csv('stat.csv', stringsAsFactors = FALSE)
#可以给细菌类群按丰度高低排个序
stat$taxonomy<-factor(stat$taxonomy, levels = c('Alphaproteobacteria', 'Gammaproteobacteria', 'Acidobacteria',
'Actinobacteria', 'Betaproteobacteria', 'Bacteroidetes'))
#将小数类型的相对丰度乘以 100 方便以百分比展示
stat$mean <- stat$mean * 100
stat$se <- stat$se * 100
#ggplot2 分组柱状图
p <- ggplot(stat, aes(taxonomy, mean, fill = group)) +
geom_col(position = position_dodge(width = 0.9), width = 0.7) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = 0.25, size = 0.3, position = position_dodge(0.9)) +
scale_fill_manual(values = c('#B3DE69', '#FDB462', '#80B1D3')) +
labs(title = NULL, x = NULL, y = 'Relative abundance (%)', fill = NULL) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = 'black'), legend.position = c(0.9, 0.85)) +
theme(axis.text.x = element_text(size = 11, angle = 45, hjust = 1)) +
scale_y_continuous(expand = c(0, 0), limit = c(0, 50))
#ggsave('p.pdf', p, width = 8, height = 5)
ggsave('p.png', p, width = 8, height = 5)
然后可以添加显著性标记了,示例数据中提供了两种类型的显著性标记。
本篇只管作图,不涉及显著性计算。这里的显著性差异都是提前计算好的,已经将差异结果整理表格中了。
#添加显著性标记 abcp1 <- p + geom_text(aes(label = sign1, y = mean + se + 3), position = position_dodge(0.9))
ggsave('p1.png', p1, width = 8, height = 5)
p2 <- p + geom_text(aes(label = sign2, y = mean + se + 6), size = 5)
ggsave('p2.png', p2, width = 8, height = 5)
最好再拿AI、PS等工具调整下“*”的位置。
好了,本篇介绍到这里了,不难对不对?
友情链接