18

プロットしたいとしますx^2。次のように使用できcurve()ます。

curve(x^2, -5, 5)

ここに画像の説明を入力してください ただし、軸は(0、0)を通過するようにします。私は次のように何かをすることができます:

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0)
axis(2, pos=0)
abline(h=0)
abline(v=0)

そして、私は以下のようなものを手に入れることになります、それは大丈夫に見えます。しかし、私が持っている唯一の不満は、軸をプロットするこの方法によって、実際の軸(たとえば、x軸の-4と4の間のセグメント)が右側と左側のセグメントよりも太くなることです。同じことがy軸にも当てはまります。軸をプロットするより良い方法があるのだろうか。ありがとうございました!

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

4

2 に答える 2

16

デフォルトでは、axis() は目盛りの位置を自動的に計算しますが、at引数を使用して手動で定義できます。したがって、回避策は次のようになります。

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=-5:5)
axis(2, pos=0)

与える:

ここに画像の説明を入力

問題は、各目盛りの位置を手動で決定する必要があることです。少し良い解決策は、axTicks関数 (デフォルトで使用される関数) を使用してそれらを計算することですが、これをカスタムaxp引数で呼び出して、軸の目盛りの最小値、最大値、および間隔の数をそれぞれ指定できるようにすることです。

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=axTicks(1,axp=c(-10,10,10)))
axis(2, pos=0)

与える:

ここに画像の説明を入力

于 2013-01-26T18:18:04.953 に答える
3

引数yaxsxaxsプロットの周りの制御間隔。"i"これを省略するように設定します。

curve(x^2, -5, 5, yaxs = "i")

参照:https ://stackoverflow.com/a/12300673/567015

于 2013-01-28T08:54:51.823 に答える