导读
非度量多维尺度分析(nonmetric multidimensional scaling, NMDS),是一种简介的梯度分析方法,也是基于距离或者相异性矩阵。与其它主要用于最大化变异和一致性的方法不一样,NMDS是一种排序方法。这对于距离缺失的数据有优势,只要先办法确定对象之间的位置关系,便可以进行NMDS分析。NMDS的计算过程会以代码的形式贴在下方,供大家参考
数据格式
NMDS与PCoA一样,NMDS可以基于任何类型距离、相异性矩阵对象(样方)进行排序。当然也可以是原始数据矩阵。这里我用的是weighted unifrac距离矩阵数据
图1 weighted 距离矩阵
分析代码
NMDS排序分析可以通过生态学分析R包vegan中的metaMDS()函数实现。因为输入metaNMDS()的数据可以是原始数据矩阵,也可以是距离矩阵,这里拿上面列举的数据做示范。
运行NMDS分析
rm(list = ls())
path
setwd(path)
library(vegan) ## 加载包
weight_dm
sep = "\t",check.names = F) ## 加载weighted距离矩阵数据
meta_info
#group
set.seed(1234) ## 设置随机种子,以便结果可以重复
weight_nmds
weight_nmds$stress # 压力值,一般小于0.1比较好,但是也要根据所选择的的主成分数目来看
图2 strees的scree图,stress随着主成分数的增加而减少
图片来源GUSTA ME[2]
作图
tiff("NMDS.tiff",width=1000,height=1000)
p
cex=1.5, font=1, pch=5) ##NMDS作图###
legend('topleft', legend=levels(meta_info$group), col=c("purple","green","blue","red"),pch=5,cex=1.5,box.lty =1)###NMDS添加Legend###
with(weight_nmds,ordiellipse(weight_nmds, meta_info$group,display = "sites", kind = "se", conf = 0.95, lwd=2,cex=0.8,lty=1,col=c("purple","green","blue","red"),font=2,label = FALSE))
#dev.off()
#env
#head(env)
#ef1
#p
#ef1
dev.off()
图3 常规方法作图
site.scores
site.scores
head(site.scores)
library("FactoMineR")
library("factoextra")
p
geom_point(aes(shape=group,color=group,fill=group),size=3)
p
p
panel.grid.minor = element_blank(),
legend.position="top",
axis.title.x = element_text(size = 16),
axis.text.x = element_text(angle=0,color="black",vjust = 0.95,hjust = 0.95,size=12),
axis.title.y = element_text(size=16),
axis.text.y = element_text(size=14,color="black"),
strip.text.x = element_text(size=18),
legend.text = element_text(size=14),
legend.title = element_text(size=16))
p
p
ggsave("NMDS.tiff", height=8, width=8, units="in")
图4 ggplot2作图
参考