Rで2 x 2の配置で4つの散布図をプロットしようとしています(実際にはrpy2を介してプロットしています)。それぞれのアスペクト比を 1 にするだけでなく、同じスケールにしたいので、すべてのサブプロットで同じ X と Y の目盛りを比較できるようにします。私はこれをやろうとしましたpar
:
par(mfrow=c(2,2))
# scatter 1
plot(x, y, "p", asp=1)
# scatter 2
plot(a, b, "p", asp=1)
# ...
編集:
これが私が今持っているものの直接的な例です:
> par(mfrow=c(2,2))
> for (n in 1:4) { plot(iris$Petal.Width, rnorm(length(iris$Petal.Width)), "p", asp=1) }
これにより、適切なタイプの散布が作成されますが、スケールが異なります。上記の呼び出しごとに と を同じに設定ylim
しても、問題は解決しません。軸ごとに非常に異なる目盛りと目盛り番号が得られるため、散布図の解釈が不必要に難しくなります。X軸とY軸を同じにしたい。たとえば、次のようになります。xlim
plot
for (n in 1:4) { plot(iris$Petal.Width, rnorm(length(iris$Petal.Width)), "p", asp=1, xlim=c(-4, 6), ylim=c(-2, 4)) }
間違った結果を生成します:
すべてのサブプロットで同じ軸が使用されるようにする最善の方法は何ですか?
私が探していたのは、すべてのサブプロットで軸を共有して同一にするための のデフォルトの動作のように聞こえる のようaxis=same
なパラメータです。par(mfrow=...)
lattice
lgautier は ggplot で素晴らしいコードを提供しましたが、事前に軸を知る必要があります。各サブプロットのデータを反復処理して、プロットする正しいティックを自分で計算することを避けたかったことを明確にしたいと思います。plot
それを事前に知る必要がある場合、ggplot ソリューションは、明示的にプロットするよりもはるかに複雑です。
agstudy は格子で解を与えました。これは、各散布図の目盛り位置を明示的に事前計算する必要がないという点で、私が望むものに最も近いように見えますが、新しいユーザーとして、格子を通常のプロットのように見せる方法を理解できません。私が得た最も近いものはこれです:
> xyplot(y~x|group, data =dat, type='p',
between =list(y=2,x=2),
layout=c(2,2), aspect=1,
scales =list(y = list(relation='same'), alternating=FALSE))
これにより、次の結果が得られます。
これをRベースのように見せるにはどうすればよいですか? これらのgroup
字幕を各サブプロットの上部に表示したり、各散布図の上部と右側にラベルのない目盛りを付けたりしたくありません。散布図の各 x と y にラベルを付けたいだけです。X と Y の共有ラベルも探していません。各サブプロットは独自の X と Y ラベルを取得します。また、ここで選択したデータでは意味がありませんが、軸ラベルは各散布図で同じでなければなりません。
トレリスを R ベースのように見せる簡単な方法がない限り、各サブプロットの各ティックの正確な位置を事前に計算することなく、(驚くべきことに) R でやろうとしていることを行う方法はないように思えます。 、事前にデータを反復処理する必要があります。