引言
????,即主坐標分析(Principal Coordinates Analysis),是一種用于研究樣本微生物群落組成相似性或差異性的數(shù)據(jù)降維分析方法。PC1 和PC2 是兩個主坐標成分,圖中每個點代表一個樣本,點的顏色代表樣本的分組,樣本間的距離越近代表微生物群落結(jié)構(gòu)越相似。圖中圓圈一般是置信水平為95%時的置信橢圓,用于比較組間的群落結(jié)構(gòu)組成相似性。
正文
1、設(shè)置工作目錄
rm(list=ls())
setwd('D:\\桌面\\PCoA')
2、安裝及加載包
#安裝所需R包
install.packages("vegan")
install.packages("ggplot2")
#加載包
library(vegan)#計算距離時需要的包
library(ggplot2)#繪圖包
3、讀取數(shù)據(jù)及數(shù)據(jù)處理
otu_raw <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE ,row.names=1)
otu <- t(otu_raw)
4、計算bray_curtis距離
otu.distance <- vegdist(otu)
5、pcoa分析
pcoa <- cmdscale (otu.distance,eig=TRUE)
pc12 <- pcoa$points[,1:2]
pc <- round(pcoa$eig/sum(pcoa$eig)*100,digits=2)
6、數(shù)據(jù)格式轉(zhuǎn)換及數(shù)據(jù)整合
pc12 <- as.data.frame(pc12)
pc12$samples <- row.names(pc12)
head(pc12)
7、簡單繪圖
p <- ggplot(pc12,aes(x=V1, y=V2))+
geom_point(size=3)+theme_bw()
p

image.png
8、加入分組信息
group <- read.table("group.txt", sep='\t', header=T)
colnames(group) <- c("samples","group")
df <- merge(pc12,group,by="samples")
color=c("#1597A5","#FFC24B","#FEB3AE")
p1<-ggplot(data=df,aes(x=V1,y=V2,
color=group,shape=group))+
theme_bw()+
geom_point(size=1.8)+
theme(panel.grid = element_blank())+
geom_vline(xintercept = 0,lty="dashed")+
geom_hline(yintercept = 0,lty="dashed")+
#geom_text(aes(label=samples, y=V2+0.03,x=V1+0.03, vjust=0),size=3.5)+
#guides(color=guide_legend(title=NULL))+
labs(x=paste0("PC1 ",pc[1],"%"),
y=paste0("PC2 ",pc[2],"%"))+
scale_color_manual(values = color) +
scale_fill_manual(values = c("#1597A5","#FFC24B","#FEB3AE"))+
theme(axis.title.x=element_text(size=12),
axis.title.y=element_text(size=12,angle=90),
axis.text.y=element_text(size=10),
axis.text.x=element_text(size=10),
panel.grid=element_blank())
p1

image.png
9、添加置信橢圓
p1 + stat_ellipse(data=df,geom = "polygon",level=0.9,linetype = 2,size=0.5,aes(fill=group),alpha=0.2,show.legend = T)

image.png
????通過上面的代碼就可以實現(xiàn)PCoA的分析及可視化,當然,我們也可以加入箱線圖以顯示分組間的顯著性:

image.png
源碼下載鏈接請在微信公眾號