R语言绘制堆叠面积图示例
本篇将同样通过这类物种丰度堆叠面积图,简要展示使用R包ggplot2中绘制堆叠面积图的一个示例。
本文使用的作图数据的网盘链接(提取码 rtko):
https://pan.baidu.com/s/1PtTKKvtrQ3V0qt1w6K-HjA
文件“phylum_top10.csv”由16S高通量测序所得的物种丰度表转化而来,展示了主要细菌类群(行)在各样本(列)中的丰度信息。
ggplot2绘制堆叠面积图
我们将使用堆叠面积图展示示例数据的12个样本中细菌类群的丰度组成及其时间演替趋势。
library(reshape2)
library(ggplot2)
#读取数据
phylum_top10 <- read.csv('phylum_top10.csv', row.names = 1, stringsAsFactors = FALSE, check.names = FALSE)
#重排表格为 ggplot2 作图样式,借助 reshape2 包 melt() 实现
phylum_top10$Taxonomy <- factor(rownames(phylum_top10), levels = rev(rownames(phylum_top10)))
phylum_top10 <- melt(phylum_top10, id = 'Taxonomy')
names(phylum_top10)[2] <- 'sample'
#合并分组信息,添加时间序列
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
phylum_top10 <- merge(phylum_top10, group, by = 'sample', all.x = TRUE)
##ggplot2 堆叠面积图
p <- ggplot(phylum_top10, aes(x = times, y = 100 * value, fill = Taxonomy)) +
geom_area(color = 'black') +
scale_fill_manual(values = c('gray', '#CCEBC5', '#BC80BD', '#FCCDE5', '#B3DE69', '#FDB462', '#80B1D3', '#FB8072', '#BEBADA', '#FFFFB3', '#8DD3C7')) +
theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) +
labs(x = 'Times', y = 'Relative Abundance(%)', title = '', fill = 'Top10 Phylum') +
scale_x_continuous(breaks = 1:15, labels = as.character(1:15), expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0))
#ggsave('ggplot2_area.pdf', p, width = 8, height = 5)
ggsave('ggplot2_area.png', p, width = 8, height = 5)
特别注意,在ggplot2中,由于堆叠面积图类似于折线图的延伸样式,因此横坐标必须为数值类型才能被识别,不可为因子或字符类型,不然不会出图。
以上仅通过一个简单示例,初步展示该图的作法。对于更复杂的类型,还需大家多多自行练习了。