原标题:如何绘制精美的PCoA图形?
今天我们来分享干货——PCoA图形的代码。继PCA、火山图、热图等代码后,基迪奥的程序猿又整理出PCoA代码。具体往期我们分享过的代码贴,可以在文末查看哦。
什么是PCoA?
微生物群落结构受多种因素影响,例如光照、温度、人群性别、年龄等。要了解目的分组是否与某种因素存在联系,我们常常会用到PCA、PCoA等排序方法。
PCoA能够将样本之间的相似性距离(虚拟距离),经过投影后,在低维度空间进行积极的冰棍距离展示,以最大限度地保留原始样本的距离关系,使相似的样本在图形中的距离更为接近,相异的样本距离更远(图1)。因此相比于PCA,PCoA以样本距离为整体考虑,更符合生态学数据特征,应用也更为广泛。
图1. PCoA原理
如何作图?
虽然一般的16S或者宏基因组等分析流程当中都会包含PCoA分析,但如果自己想要更改分组的形状,或者挑选特定的OTU进行分析,那么自己进行操作会高效很多。
PCoA的作图主要分为三个步骤:
选择特定的相似性距离并计算距离矩阵。距离的选择可以有Bray-curits、Unifrac等,不同的距离有不同的作用和意义(具体可以参考 微生物β多样性常用计算方法比较)。相似性距离可以利用R的GUniFrac和vegan等包计算,也可以利用QIIME计算。
进行PCoA分析,也就是利用表征分析选择最能表示样本距离的坐标轴。这个可以利用R的ape包的pcoa()命令完成。
PCoA图形展示。图形可以用ordiplot()命令展示,但如果需要比较美观的图形,建议用ggplot来画。
下面我们以R为基础,展示如何根据Unweighted Unifrac距离来画PCoA图:
----------------------代码开始了-----------------------
###导入需要的R包
library(GUniFrac) #用于计算Unifrac距离
library(ape) # 用于pcoa分析
library(ggplot2) #用于画图
##读文件
Otu_tab
Tree
Otu_tab
Otu_tab_rff
unifracs
du
Group
shape
color
PCOA
result
pro1 = as.numeric(sprintf("%.3f",result[1]))*100
pro2 = as.numeric(sprintf("%.3f",result[2]))*100
x = PCOA$vectors
sample_names = rownames(x)
pc = as.data.frame(PCOA$vectors)
pc$names = sample_names
legend_title = ""
group = Group
pc$group = group
xlab=paste("PCOA1(",pro1,"%)",sep="")
ylab=paste("PCOA2(",pro2,"%)",sep="")
pca=ggplot(pc,aes(Axis.1,Axis.2)) + #用ggplot作图
geom_point(size=3,aes(color=group,shape=group)) +
# geom_text(aes(label=names),size=4,vjust=-1) +
labs(x=xlab,y=ylab,title="PCOA",color=legend_title,shape=legend_title) +
geom_hline(yintercept=0,linetype=4,color="grey") +
geom_vline(xintercept=0,linetype=4,color="grey") +
scale_shape_manual(values=shape) +
scale_color_manual(values=color) +
theme_bw()
-------------------------代码结束------------------------
结果图展示:
输入OTU表格之后,运行上面代码,就可以出来图形(当然结果的数据输入是经过一定修改,自己根据需求定义样本数目,点的形状和颜色就可以)。
图2. PCoA结果展示
好了,今天分享的内容就到这里啦。想查看往期代码贴的朋友可以直接戳下面的题目:
责任编辑: