R ボックスプロットで軸ラベルと軸タイトルの間にスペースを空けるにはどうすればよいですか? 質問する

R ボックスプロットで軸ラベルと軸タイトルの間にスペースを空けるにはどうすればよいですか? 質問する

次のコードを使用して 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()、軸の目盛りと軸ラベルが重ならなくなります。基本グラフィックスで必要な値を見つけるには、試行錯誤が最善の解決策であると考えられます。

おすすめ記事