3

我正在尝试更改我的 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))

谢谢

4

2 回答 2

1

如果您不设置 the ylimtoo,那么vegan就别无选择,只能显示比您想要的更多(或更少)的 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在大约 50%的设备上进行绘图height(大约因为 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()两列上的 ,然后计算两个范围的比率),然后使用它为您提供所需的绘图高度,以适应您要声明的宽度。

于 2014-10-24T17:16:09.730 回答
0

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

plot(NMDS_HPA$points, xlim=c(-1.5,1.5))
于 2018-03-01T20:04:38.703 回答