使用R,ggplot2绘制NMDS图

来源:互联网 发布:淘宝转换率2.5正常么 编辑:程序博客网 时间:2024/05/20 07:52

使用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()
  • 结果显示
    这里写图片描述

这里写图片描述