読者です 読者をやめる 読者になる 読者になる

グラフの軸ラベルの位置 mgp

R

Rのデフォルトだとちょっと軸ラベルが離れすぎているし、余白も多めなので調べてみた。


グラフィックスパラメータの mpg で、軸ラベル・軸目盛・軸線のバランスを整える事ができる様だ。
ヘルプには以下のような感じに記述してあった。


軸からラベル、軸から目盛、軸から軸線までのマージンを設定します(単位はmex)。
 mgp[1]: 軸からラベルまでのマージン
 mgp[2]: 軸から目盛までのマージン
 mgp[3]: 軸から軸線までのマージン
デフォルトはc(3, 1, 0)。


mar の方は、


余白を設定できます。
c(bottom, left, top, right) の順に並んでいて、デフォルトは c(5, 4, 4, 2) + 0.1 です。


ちょっと作図してたので流用。

##############################
pb <- function(p, a, b) {
    exp( (a-1) * log(p) + (b-1) * log(1-p) - lbeta(a, b) )
}
pv <- seq(0, 1, by = 0.0025)
z1 <- pb(pv, 2/3, 1)[!is.na(pb(pv, 2/3, 1)) & !is.infinite(pb(pv, 2/3, 1))]
p1 <- pv[!is.na(pb(pv, 2/3, 1)) & !is.infinite(pb(pv, 2/3, 1))]

######## prior ########
par(mar=c(3.2, 3.2, 1.5, 0.5), mgp=c(2.0, 0.7, 0))
par(bty="l")
plot(
  p1, z1, xlim = c(0, 1), type = 'l',
  lty = 1, col = "#E64B6B", lwd = 6, ylim = c(0, 5),
  xlab = expression(theta), ylab = expression(paste("p(", theta, ")")),
  main = "prior density"
)
text(
  1, max(z1) * 0.95,
  expression(paste("Beta(2/3, 1)")),
  pos = 2, offset = 0, cex=.8
)
abline(h = seq(0, 5, by = 1), lty=2, col = "#E9DECA")



TeXで取り込んで枠を付けたら差が分かりにくくなりました、自分でmgpを弄って見た方がはやいかな。
左がmarとmgpを調整したもので、右がデフォルトの状態での出力。
mgp[3]を弄ると、軸が浮きます・・・・