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

も設定しない場合、軸のスケーリングを保持する必要があるためylimビーガンは x 軸を必要以上に (または少なく) 表示するしかありません。一方の軸に沿った単位変更は、もう一方の軸に沿った同じ単位変更と一致する必要があります。それ以外の場合、図でユークリッド距離を (簡単に) 表す方法をどのように知ることができますか? これらのユークリッド距離は、元の非類似度の順位を反映すると考えられるため、縦横比または軸の相対スケーリングを維持することが重要です。

マウスを使用して画面上のデバイス ウィンドウのサイズを変更するだけで、これを実際に確認できます。R は、縦横比 1 を維持するために、常に異なる軸の範囲を使用して Figure を再プロットします。

次の再現可能な例を考えてみましょう。

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)て計算し、2 つの範囲の比率を計算します)。 range())、それを使用して、指定したい幅のプロットの希望の高さを指定します。

于 2014-10-24T17:16:09.730 に答える