柱状图也是差异可视化图形的一种,今天小编来分享一下组间差异柱状图在R语言中的绘制方法,主要用的是ggplot2包,这个包功能的确很强大。
数据文件大概长这样(有需要的小伙伴可进群获取):
那咱们就开始画吧。
1.读取数据,设置横坐标为细菌类群,纵坐标为相对丰度;
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
2.用ggplot2画出组间差异柱状图;
#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("#3C5488B2","#00A087B2", "#F39B7FB2")) +
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))
p
#ggsave('p.pdf', p, width = 8, height = 5)
3.如果想添加abc显著性标记,可以先将显著性差异计算好,然后手动添加至柱状图中;
#添加显著性标记 abc
p1 <- p + geom_text(aes(label = sign1, y = mean + se + 3), position = position_dodge(0.9))
p1
#ggsave('p1.png', p1, width = 8, height = 5)
4.添加*显著性标记,同上,手动添加计算好的显著性差异;
#添加显著性标记 *
p2 <- p + geom_text(aes(label = sign2, y = mean + se + 6), size = 5)
p2
#ggsave('p2.png', p2, width = 8, height = 5)
关注“作图帮”公众号,免费分享绘图代码与示例数据~