31

この簡単な質問をするのは恥ずかしいですが、プロットを作成するたびに数日間頭を悩ませてきました。

plot (x = 1:10, y = rnorm (10, 5, 2))
grid (10,10, lty = 6, col = "cornsilk2")

グリッドを軸がラベル付けされている場所、つまりx軸で2、4、6、8、10に、同様にy軸で3、4、5、6、7、8に配置したいと思います。

ここに画像の説明を入力してください

プロットサイズが変わるたびにデフォルトのラベルの動作が変わるので、プロセスを自動化したいです。次のプロットを参照してください。

ここに画像の説明を入力してください

4

4 に答える 4

43

と引数?gridの説明から:nxny

NULLの場合、デフォルトでは、グリッドは対応するデフォルト軸の目盛り(つまり、axTicksによって計算された目盛り)と整列します。

plot (x = 1:10, y = rnorm (10, 5, 2)) 
grid (NULL,NULL, lty = 6, col = "cornsilk2") 
于 2011-11-10T15:38:53.827 に答える
24

参考までに、カスタムティック間隔を定義していない場合は、plot()コマンドからグリッドと軸のパラメーターを直接制御する方法があります。

plot(x = 1:10, y = rnorm(10, 5, 2), xlim=c(1, 10), ylim=c(1, 10), panel.first=grid())

plot.default()のドキュメントには、これらのパラメーターに関する詳細情報が記載されています。

カスタムティック間隔を使用する場合、最も簡単なのは、ablineを使用してグリッドを描画することです。

plot(x = 1:10, y = rnorm(10, 5, 2), xaxp=c(1, 10, 10), yaxp=c(1, 10, 10), axes=FALSE)
axis(1, 1:10)
axis(2, 1:10)
abline(h=1:10, v=1:10, col="gray", lty=3)

グリッドの例

このスレッドおよびグリッド配置のカスタムティック間隔の詳細については、こちらをご覧ください。

于 2013-02-06T14:51:43.107 に答える
7

後世のために、これは手動でそれを行うための長い道のりの方法です:

plot (x = 1:10, y = rnorm (10, 5, 2))
grid (lty = 6, col = "cornsilk2")

xaxp <- par("xaxp")
yaxp <- par("yaxp")

abline(v=seq(xaxp[1], xaxp[2], (xaxp[2]-xaxp[1])/xaxp[3]), lty=6, col = "cornsilk2")
abline(h=seq(yaxp[1], yaxp[2], (yaxp[2]-yaxp[1])/yaxp[3]), lty=6, col = "cornsilk2")
于 2011-11-10T15:42:21.940 に答える
1

ここで提供される答えははるかに簡単ですが、軸の両端に「空き領域」がないことを嫌うかもしれません。簡単に言えば、

問題は、グリッドがユーザースペースにnxグリッドラインを配置しているのに、プロットが両側に4%余分なスペースを追加していることです。あなたはこれをコントロールすることができます。プロットに追加xaxs="i", yaxs="i"すると、余分なスペースがオフになります。ただし、右上のポイントが切り捨てられるため、xlimとylimの値を変更し、それに合わせてnxを変更する必要があります。

于 2018-02-06T18:29:36.273 に答える