71

と一緒に描かれた 4 つのプロットの編集がありpar(mfrow=c(2,2))ます。上の 2 つのプロットに共通のタイトルと、左右の 2 つのプロットの間にある下の 2 つのパネルに共通のタイトルを描きたいと思います。

これは可能ですか?

4

5 に答える 5

73

これはうまくいくはず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)

于 2013-02-02T09:31:05.153 に答える
23

title(...)上記と同じ引数を使用して、太字で同じことを行うことができます。

title("My 'Title' in a strange place", line = -21, outer = TRUE)
于 2014-04-11T17:34:23.313 に答える
7

この投稿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)

centered_titles

ここでは、 で示されているように、タイトルはプロットの上端より 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))
}
于 2015-04-27T05:25:47.460 に答える