我试图更改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))
由于
答案 0 :(得分:1)
如果您也没有设置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
为~50%的设备上绘图那个height
(大约是因为R&#39的默认值是在左上/右下边距上使用不同大小的边距。)
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)
并计算{然后在两列上{1}}计算两个范围的比率,然后使用它来为您想要说明的宽度提供所需的绘图高度。
答案 1 :(得分:0)
如果您只绘制了点而不是NMDS对象,那么xlim就可以正常工作
plot(NMDS_HPA$points, xlim=c(-1.5,1.5))