查看原文
其他

R语言绘制物种Rank-abundance曲线

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08
R语言绘制Rank-abundance曲线

在微生物16S/ITS/18S测序分析报告中,我们经常可以看到这样的图,称为Rank-abundance曲线。

Rank Abundance曲线是将样品中的OTUs(可以粗略理解为“物种”)按相对丰度(或者包含的序列数目)由大到小排序得到对应的排序编号,再以OTUs的排序编号为横坐标,OTUs中的相对丰度(也可用该等级OTU中序列数的相对百分含量)为纵坐标,将这些点用折线连接,即绘制得到Rank Abundance曲线,它可直观的反映样品中物种的丰富度和均匀度。在水平方向上,物种的丰富度由曲线的宽度来反映,物种的丰富度越高,曲线在横轴上的跨度越大;在垂直方向上,曲线的平滑程度,反映了样品中物种的均匀程度,曲线越平缓,物种分布越均匀。

下图中,横坐标代表各OTU的排序编号,纵坐标代表各OTU的相对丰度,样本曲线的延伸终点的横坐标位置为对应样本的测序数量。如果曲线越平滑下降表明样本的物种多样性越高,而曲线快速陡然下降表明样本中的优势菌群所占比例很高,多样性较低。


本篇白鱼小编继续带大家绘制这种Rank-abundance曲线。示例数据、R脚本等,已上传至百度盘(提取码488s)。https://pan.baidu.com/s/1HInewdVJ-T15hPHxI8gmYg 网盘文件“otu_table.txt”为某16S扩增子测序所得OTU丰度表格,可以理解为物种丰度表。表中每一列为一个样本,每一行为一种OTU,交叉区域为每种OTU在各样本中的丰度。

我们将通过该物种丰度表中的内容,绘制Rank-abundance曲线。


Rank-abundance曲线绘制


这种曲线绘制起来也很容易。首先作个统计,只需要对每个样本中的OTU按丰度大小降序排列。然后以横坐标为各OTU的排列顺序,纵坐标为各OTU的丰度(最好使用相对丰度,并做个对数转化),作图就可以了。一个Rank-abundance曲线统计及作图示例如下。#读取 OTU 丰度表
otu <- read.delim('otu_table.txt', row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
otu <- t(otu)

#统计,BiodiversityR 包 rankabundance() 实现 OTU 排序
#虽然自己排序也很简单,但还是导个包统计省事点……
library(BiodiversityR)

otu_relative <- otu / rowSums(otu) #转化为相对丰度
rank_dat <- data.frame()
for (i in rownames(otu_relative)) {
rank_dat_i <- data.frame(rankabundance(subset(otu_relative, rownames(otu_relative) == i), digits = 6))[1:2]
rank_dat_i$sample <- i
rank_dat <- rbind(rank_dat, rank_dat_i)
}
rank_dat <- subset(rank_dat, abundance != 0)

#ggplot2 作图,更好的可视化效果,还请自行修改 ggplot2 作图细节
library(ggplot2)

ggplot(rank_dat, aes(rank, log(abundance, 10), color = sample)) +
geom_line() +
scale_colour_manual(limits = c('a1', 'a2', 'a3', 'a4', 'a5', 'a6'), values = c('orange', 'purple', 'green', 'blue', 'red', 'gray40')) +
labs(x = 'OTUs rank', y = 'Relative adundance (%)', color = NULL) +
theme(panel.grid = element_blank(), panel.background = element_rect(fill = 'transparent', color = 'black'), legend.key = element_rect(fill = 'transparent')) +
scale_y_continuous(breaks = 0:-5, labels = c('100', '10', '1', '0.1', '0.01', '0.001'), limits = c(-5, 0))


事实上,BiodiversityR包也自带了一些函数,如rankabunplot()、rankabuncomp()等,可以自动绘制Rank-abundance曲线。不过貌似效果比较一般。

#BiodiversityR 包自带的作图函数
#例如
rankabuncomp(otu, y = data.frame(name = rownames(otu)), type = 'l', factor = 'name', scale = 'logabun', legend = FALSE)



链接

R语言绘制物种稀释曲线及其它多种Alpha多样性曲线

R语言计算群落多样性分析中常见Alpha多样性指数

群落多样性分析中常见Alpha多样性指数简介

R语言绘制三元图(Ternary Plot)示例

突破韦恩图数量限制,R包UpSetR集合可视化

R语言绘制提琴图

R语言绘制箱线图

R语言绘制双向柱状图

R语言绘制堆叠面积图

R语言绘制堆叠柱状图

R语言绘制星形图

R语言绘制饼图(扇形图)



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存