改变R中的轴与NMDS图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了改变R中的轴与NMDS图相关的知识,希望对你有一定的参考价值。

我正在尝试更改NMDS图中的轴以放大我的网站的绘制位置。我假设在物种点的产品中选择的空间我没有绘制。我已经尝试将xlim添加到我的代码中无济于事,并且想知道我是否在错误的地方或者是否需要其他操作。下面是我的代码的副本。

#NMDS on pooled abundance with NA's omitted
NMDS_HPA<-metaMDS(HP_Abundance_omit[,-1],k=2, trymax=1000)
plot(NMDS_HPA, type="n", display="sites", xlim=c(-1.5,1.5))
with(descriptors, levels(T)) 
colorvec<-c("seagreen4", "tan4", "mediumblue")
plot(NMDS_HPA, type="n", xlim=c(-1.5,1.5))
title(main="NMDS using Abundance with Bray-Curtis", sub="Habitats Pooled")
ordihull(NMDS_HPA, groups=treat, draw="polygon", col="grey90", label=F)
with(descriptors, points(NMDS_HPA, display="sites", col=colorvec[T], pch=21, bg=colorvec[T]))
with(descriptors, legend("topright", legend=levels(T), bty="n", col=colorvec, pch=21, pt.bg=colorvec))

谢谢

答案

如果你没有设置ylim,那么素食主义者别无选择,只能显示比你想要的更多(或更少)的x轴,因为必须保留轴的缩放;沿一个轴的单位变化必须与另一个轴的相同单位变化相匹配。否则,你怎么知道如何在图上表示欧几里德距离(很容易)?由于这些欧几里德距离应该反映原始相异度的等级排序,因此保持轴的纵横比或相对比例是重要的。

只需使用鼠标重新缩放屏幕上设备窗口的大小,您就可以看到这一点。 R一直使用不同的轴限制重新绘制图形,以保持纵横比为1。

考虑这个可重复的例子:

library("vegan")
data(dune)

set.seed(56)
sol <- metaMDS(dune)

在x轴和y轴上选择一个部分可以按预期工作

## zoom in on the section (-0.5,0.5)(-0.5,0.5)
plot(sol, xlim = c(-0.5, 0.5), ylim = c(-0.5,0.5))

如果你想保留完整的y轴,但只显示x轴的中间50%那么你必须绘制一个width约为height的50%的设备(大约是因为R的默认值是使用不同大小的顶部/左下/右边距上的边距。)

png("~/mds-zoom2.png", height = 700, width = 350, res = 100, pointsize = 16)
plot(sol, xlim = c(-0.5, 0.5))
dev.off()

哪个产生

这几乎是正确的。您可以通过使用par(mar = rep(4, 4) + 0.1)在图表周围设置边距相等来精确解决问题,然后计算出x和y轴上的得分范围的比率(得到scores(sol)并计算两列上的range()然后计算比率两个范围),然后使用它来为您想要声明的宽度提供所需的绘图高度。

另一答案

如果您只绘制了点而不是NMDS对象,那么xlim就可以了

plot(NMDS_HPA$points, xlim=c(-1.5,1.5))

以上是关于改变R中的轴与NMDS图的主要内容,如果未能解决你的问题,请参考以下文章

使用包 vegdist 在 R 中执行 NMDS 时出错

默认情况下使matplotlib图看起来像R?

我应该为nmds使用什么类型的矩阵

nmds bray-curtis 相异指数中的 x 和 y 轴代表啥?(Vegan package R)

是否有 R 函数来调整条形图的轴比例?

如何使条形图上的x轴与pointWidth匹配