R语言|绘制组间差异柱状图

柱状图也是差异可视化图形的一种,今天小编来分享一下组间差异柱状图在R语言中的绘制方法,主要用的是ggplot2包,这个包功能的确很强大。

数据文件大概长这样(有需要的小伙伴可进群获取):


image.png

那咱们就开始画吧。

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)
image.png

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)
image.png

4.添加*显著性标记,同上,手动添加计算好的显著性差异;

#添加显著性标记 *
p2 <- p + geom_text(aes(label = sign2, y = mean + se + 6), size = 5)
p2
#ggsave('p2.png', p2, width = 8, height = 5)
image.png

关注“作图帮”公众号,免费分享绘图代码与示例数据~

你可能感兴趣的:(R语言|绘制组间差异柱状图)