次のコードを使用して R でボックスプロットを作成しています。
boxplot(perc.OM.y ~ Depth, axes = F, ylim = c(-0.6, 0.2), xlim = c(3.5, 5.5),
lwd = 0.1, col = 8,
ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5)
axis(1, at = c(3.5, 4, 5, 5.5), labels = c(" ", "Shallow", "Deep", " "),
cex.axis = 1.5)
axis(2, cex.axis = 1.5)
問題は、現在、y 軸の数字ラベルが軸タイトルと重なっていることです。軸タイトルと軸の数字ラベルの間にさらにスペースを置く方法はありますか?
ありがとう
ベストアンサー1
## dummy data
dat <- data.frame(Depth = sample(c(3:6), 20, replace = TRUE), OM = 5 * runif(20))
プロットの左側の余白を大きくして、y 軸のラベルと注釈のためのスペースを追加します ( side = 2
)。
## margin for side 2 is 7 lines in size
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
次にプロットします:
## draw the plot but without annotation
boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE)
## add axes
axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5)
axis(2, cex.axis = 2)
## now draw the y-axis annotation on a different line out from the plot
## using the extra margin space:
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
## draw the box to finish off
box()
次に、プロットの余白をリセットします。
par(op)
これは与える:
そこで、サイド 2 のプロットの余白にさらにスペースを作成し、軸と注釈 ( ylab
) を別々に描画して、プロットの間隔を制御します。
つまり、ここでの鍵となるのは次の行です。
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
私たちが行うことは、元のグラフィックパラメータをオブジェクトに保存することですop
。そして下、左、上、右の余白のサイズ (行数) をそれぞれ 5、7、4、2 + 0.1 行に変更します。上記の行はデフォルトを示しているため、コードによって左余白の行数が通常デフォルトで提供される行数より 2 行多くなります。
次に、 を使用して y 軸ラベルを描画するときにtitle()
、ラベルを描画する行 (7 行のうち) を指定します。
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
ここでは線を使用しました4.5
が、5
これも機能します。の値が大きいほど、'line'
プロットから離れた場所にラベルが描画されます。
左マージンの値を見つけるのがコツですそして'line'
呼び出し内のの値によりtitle()
、軸の目盛りと軸ラベルが重ならなくなります。基本グラフィックスで必要な値を見つけるには、試行錯誤が最善の解決策であると考えられます。