一般选取top10—top15丰度的细菌门类群用于展示其丰度组成,其他的类群合并为“Others”展示;横坐标代表不同测序样本(或分组),纵坐标代表了微生物类群的相对丰度,不同的微生物类群用不同颜色展示。
一般堆叠柱状图
值得注意的是,有的OTU注释表中已经存在Others,此时需要合并所有others。
library(tidyverse)
file = path
phylum <- read.table(file = file, header = TRUE, row.names = 1,
sep = '\t', stringsAsFactors = FALSE,
check.names = FALSE)
# 求各类群的丰度总和,并排序
phylum$sum <- rowSums(phylum)
phylum <- phylum[order(phylum$sum, decreasing = TRUE), ]
# 挑选 top10 门类群,并将 top10 外的类群合并为“Others”
phylum_top10 <- phylum[1:10, -ncol(phylum)]
phylum_top10['Others', ] <- 1 - colSums(phylum_top10)
phylum_top10$Taxonomy <- fct_inorder(rownames(phylum_top10))
# 创建分组信息数据集
group <- data.frame(variable = c(paste0("c", seq(1,6)), paste0("t", seq(1,6))),
group = rep(c("Control", "Treat"), each = 6),
times = rep(1:6, each = 2))
phylum_top10 <- pivot_longer(data = phylum_top10, cols = -Taxonomy,
names_to = "variable", values_to = "value")
# 按同类项进行合并
phylum_top10 <- merge(phylum_top10, group, by = 'variable')
# 绘制带分面的柱状图
ggplot(data = phylum_top10, aes(variable, 100 * value, fill = Taxonomy)) + geom_col(position = 'stack', width = 0.6) +
# 利用facet_wrap 按组分面并排
facet_wrap(~ group, scales = 'free_x', ncol = 2) +
# 用 scale_fill_brewer 的默认11色配色板
scale_fill_brewer(palette = "Set3") +
labs(x = '', y = 'Relative Abundance(%)') +
# 去掉背景网格,但保留横网线利于比较各组数据,一目了然
theme(panel.grid.minor.y = element_line(colour = "black"),
panel.background = element_rect(color = 'black',
fill = 'transparent'))
plot.png
堆叠图连线
-
根据各分组数据获得起点终点坐标,利用geom_segment()做连线。
网友评论