グラフィックス参考実例集:ボックスと軸の形状
(グラフィックス参考実例集に戻る。Rのグラフィックスパラメータを参照する。)
par 関数で指定できるグラフィックスパラメータ bty (box type) はボックスと軸の形状を定める。 概略指定文字に似た(?)形状に配置される。
関数axisは座標軸だけを描きます。最も簡単な使用法は、
axis(side=4)
のように軸を描く余白のサイド番号のみを指定して、高水準作図関数が通常描くような軸を描かせるものです。 目盛の位置を指定するには、引数atを使います。この引数には mtextの引数atと同様に、sideが 1か3(下と上の余白)であればユーザ座標系のx座標値のベクトルを、2か 4 (左と右の余白) であればy 座標値のベクトルを与えます。
通常は、座標系と目盛の位置から決まる値が目盛のラベルとして自動的に描かれます。目盛のラベルを明示的に指定するには、引数labelsを使います。この引数にFALSEを指定すると目盛のラベルは描かれません。 labelsにatに与えたベクトルと同じ長さの数値または文字型ベクトルを指定すれば、それらが目盛のラベルとして描かれます。
軸と目盛を図形領域から離して描くには、引数lineにどれだけ外側へ離すかを、標準文字の大きさに作図パラメータmexを乗じた値を単位とした行数で指定します。この引数の値を負にすれば、図形領域の内側に軸を描くことになります。
引数lineで指定する代りに、引数posによって軸を描く位置を指定することもできます。この場合、上(side 3)か下(side 1)に軸を描く場合は y座標を、右(side 4)か左(side 2)に軸を描く場合はx座標をposに与えます。 例えば、以下のようにpos=0とすれば原点を通る座標軸を描くことができます。
> plot(rnorm(30), rnorm(30), axes = F, xlab = "", ylab = "") > axis(1, pos = 0, at = pretty(par("usr")[1:2]), adj = 0) > axis(2, pos = 0, at = pretty(par("usr")[3:4]), las = 2, adj = 1) > box()
軸や目盛を描かず枠だけ描くには、関数boxを使用します。 この関数は、図形領域いっぱいに枠を描きます。したがって、
> box()
によって、図形領域の周りに枠が描かれることになります。 引数に線の太さを指定することができます。
> plot(1:10) > box(5)
のようにすれば、図の枠を太くすることができます。また、引数fillで内部を塗りつぶすことができます。色はcolで指定します。
> box(fill=T, col=4) > par(new=T) > plot(1:10)
塗りつぶしてからプロットしていることに注意して下さい。逆の順番にするとせっかく描いた図が塗りつぶされてしまいます。plotによる画面の消去を防ぐため、par(new=T)も必要です。
par(bty="l"); plot(1:10)
par(bty="o"); plot(1:10)
par(bty="]"); plot(1:10)
par(bty="7"); plot(1:10)
par(bty="c"); plot(1:10)
par(bty="u"); plot(1:10)
par(bty="n"); plot(1:10)
グラフィックスオプション xaxs, yaxs は軸範囲の形状を指定する。既定値の "r" は指定軸範囲を左右に 4% 拡大し、ラベル位置を決める。"i" は指定軸範囲をそのまま使う。例えば、原点 (0,0) で両軸が交差するようにしたければ par(xaxs="i", yaxs="i") と指定する。なぜ4%拡大が既定動作になっているかは以下の図を見れば納得。
> par(mfrow=c(2,1)) > plot(c(0, 50, 100), c(0, 50,100), xaxs = "i", yaxs = "i", xlim = c(0, 100), ylim = c(0, 100)) > plot(c(0, 50, 100), c(0, 50,100), xlim = c(0, 100), ylim = c(0, 100))
# r-help 記事より (Marc Schwartz, 2004.3.26) > x <- c(1.1 * 1:4, 25 * 1:5) / 50e+03 > y <- c(0.15 * 1:4, 0.6 + 0.05 * 1:5) > old.par <- par(no.readonly=TRUE) > xlim <- range(x) > ylim <- c(0, 1) > plot(x, y, type = "l", log = "x", xlim = xlim, ylim = ylim) > axis(3, labels = axTicks(3) * 4e06) > par(old.par)