R(作図)

2023年10月 5日 (木)

[R]2次元線図を描画後にそれぞれの軸方向の描画範囲を得る

par関数に"usr"パラメーターを指定して実行する。実行すると数値型ベクトルで(横軸方向左端、横軸方向右端、縦軸方向下端、縦軸方向上端)の値を返す。以下、実行例。

> x <- 1:10
> y <- log(x)
> plot(x, y)
> par("usr")
[1] 0.6400000 10.3600000 -0.0921034 2.3946885
> plot(x, y, asp = 1.0)
> par("usr")
[1] 0.640000 10.360000 -3.202457 5.505042
> plot(x, y, asp = 1.0, xaxs = "i", yaxs = "i")
> par("usr")
[1] 1.000000 10.000000 -2.879957 5.182542

Par_usr_03Par_usr_02Par_usr_01

plot関数はaspオプションを指定しないと、与えたプロット点に応じてアスペクト比が決まり描画範囲も決まる。例えばaspオプションに1を与えると、描画範囲が短いほうの軸はアスペクト比に応じて強制的に描画範囲が伸ばされる。上の2番目の例では縦軸方向の描画範囲が伸ばされている。

xaxsとyaxsオプションを指定しないと(デフォルトの"r")、それぞれのプロット点による描画範囲の4%だけ、両方向に描画範囲が広がる(横軸であれば10-1=9より9×0.04=0.36なので、左端は1-0.36=0.64)。この描画範囲を与えたプロット点の範囲ぴったりにしたい場合は、xaxsとyaxsオプションにそれぞれ"i"を与えればよい。上の3番目の例では、図もpar関数の戻り値もそのようになっている。