使用R,ggplot2绘制NMDS图

使用R,ggplot2绘制NMDS图

  • 输入文件准备

mapping.txt :样品名与分组信息
otu.txt : otu表
文件下载 : https://github.com/tangshanshaolu/R_test.git

  • 代码部分
library(vegan)
library(ggplot2)
pdf("nmds.pdf")
otu<-read.table("otu.txt",header=T,sep="\t")
rownames(otu)<-otu[,1]
otu<-otu[,-1]
otu<-data.frame(t(otu))
map<-read.table("mapping.txt",header=F,sep="\t")
sites<-as.vector(map[,1])
amt<-as.vector(map[,2])
sol <- metaMDS(otu)
MyMeta = data.frame(sites,amt,row.names = "sites")
NMDS = data.frame(MDS1 = sol$points[,1], MDS2 = sol$points[,2])

#使用ggplot2画图,逐步添加
P<-ggplot(data = NMDS, aes(MDS1,MDS2))+theme_bw()
P+theme(panel.grid=element_blank())
P+geom_point(aes(data = MyMeta,shape= MyMeta$amt, color = MyMeta$amt))
P+geom_text(label=MyMeta$amt,size=3,hjust=0.5, vjust=0)
P+theme(legend.key=element_rect(colour="white",fill="white",size=3,linetype="dashed"))
P+theme(legend.title=element_blank())
P+geom_polygon(data=MyMeta$sites,aes(fill=MyMeta$amt,alpha=0.8),show.legend=FALSE)+annotate("text",x=min(NMDS$MDS1),y=min(NMDS$MDS2),hjust=0,vjust=0,label=paste("Stress:",sol$stress))
dev.off()

#使用plot基础函数画图,并且添加置信圈
pdf("nmds2.pdf")
plot(sol$points, col = MyMeta$amt,pch=19)
ordiellipse(sol, MyMeta$amt, display = "sites", kind = "se", label = T ,conf =0.95)
dev.off()
  • 结果显示
    使用R,ggplot2绘制NMDS图_第1张图片

使用R,ggplot2绘制NMDS图_第2张图片

你可能感兴趣的:(r语言)