と一緒に描かれた 4 つのプロットの編集がありpar(mfrow=c(2,2))
ます。上の 2 つのプロットに共通のタイトルと、左右の 2 つのプロットの間にある下の 2 つのパネルに共通のタイトルを描きたいと思います。
これは可能ですか?
これはうまくいくはずline
ですが、それを正しくするために引数をいじる必要があります:
par(mfrow = c(2, 2))
plot(iris$Petal.Length, iris$Petal.Width)
plot(iris$Sepal.Length, iris$Petal.Width)
plot(iris$Sepal.Width, iris$Petal.Width)
plot(iris$Sepal.Length, iris$Petal.Width)
mtext("My 'Title' in a strange place", side = 3, line = -21, outer = TRUE)
mtext
「マージンテキスト」の略です。side = 3
「上部」マージンに配置するように指示します。line = -21
配置を 21 行ずらすように指示します。outer = TRUE
外側のマージン領域を使用しても問題ないと言っています。
上部に別の「タイトル」を追加するには、次のように使用して追加できます。mtext("My 'Title' in a strange place", side = 3, line = -2, outer = TRUE)
title(...)
上記と同じ引数を使用して、太字で同じことを行うことができます。
title("My 'Title' in a strange place", line = -21, outer = TRUE)
この投稿line2user
の関数を使用して、これを行う別の方法があります。
par(mfrow = c(2, 2))
plot(runif(100))
plot(runif(100))
text(line2user(line=mean(par('mar')[c(2, 4)]), side=2),
line2user(line=2, side=3), 'First title', xpd=NA, cex=2, font=2)
plot(runif(100))
plot(runif(100))
text(line2user(line=mean(par('mar')[c(2, 4)]), side=2),
line2user(line=2, side=3), 'Second title', xpd=NA, cex=2, font=2)
ここでは、 で示されているように、タイトルはプロットの上端より 2 行上に配置されていますline2user(2, 3)
。2 番目と 4 番目のプロットに対して、左右の余白を合わせた幅の半分、つまりmean(par('mar')[c(2, 4)])
.
line2user
ユーザー座標の軸からのオフセット (行数) を表し、次のように定義されます。
line2user <- function(line, side) {
lh <- par('cin')[2] * par('cex') * par('lheight')
x_off <- diff(grconvertX(0:1, 'inches', 'user'))
y_off <- diff(grconvertY(0:1, 'inches', 'user'))
switch(side,
`1` = par('usr')[3] - line * y_off * lh,
`2` = par('usr')[1] - line * x_off * lh,
`3` = par('usr')[4] + line * y_off * lh,
`4` = par('usr')[2] + line * x_off * lh,
stop("side must be 1, 2, 3, or 4", call.=FALSE))
}