同参数编制了人物面板的共同主标题(mfrow)(Common main title of a fig

2019-07-19 04:20发布

我有与拉在一起4只绘出一个汇编par(mfrow=c(2,2)) 我想绘制为2以上的曲线的共同标题和用于2的下方板的共同标题被2左右地块之间居中。

这可能吗?

Answer 1:

应该工作,但是你需要玩的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)



Answer 2:

可以使用功能layout()并设置其发生在两列中的两个绘图区域(见的重复数字1和3中的matrix() 然后我用plot.new()text()来设置标题。 你可以用利润和高度发挥以获得更好的代表性。

x<-1:10
par(mar=c(2.5,2.5,1,1))
layout(matrix(c(1,2,3,4,1,5,3,6),ncol=2),heights=c(1,3,1,3))
plot.new()
text(0.5,0.5,"First title",cex=2,font=2)
plot(x)
plot.new()
text(0.5,0.5,"Second title",cex=2,font=2)
hist(x)
boxplot(x)
barplot(x)



Answer 3:

相同的,但在大胆的是可以做到用title(...)与上面相同的参数:

title("My 'Title' in a strange place", line = -21, outer = TRUE)


Answer 4:

这里是另一种方式来做到这一点,使用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) 我们通过相对于所述第二和第四曲线抵消它,由左,右边界的组合宽度的一半居中的,即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))
}


文章来源: Common main title of a figure panel compiled with par(mfrow)