2012-05-27 79 views
9

我使用的是格包,以显示图的一个这样的数组:R:网格布局标题

layout <- grid.layout(2, 4) 
pushViewport(viewport(layout = layout)) 
# print various plots 

是否有某种方式来指定整个网格布局标题?

回答

14
基于类似的SO问题

假人例如:Place title of multiplot panel with ggplot2

  1. 首先创建一个布局所需的行数的+ 1短一个用于标题:

    pushViewport(viewport(layout = grid.layout(3, 2, heights = unit(c(0.5, 5, 5), "null")))) 
    
  2. 创建一些情节有:

    print(ggplot(mtcars, aes(hp)) + geom_histogram(), vp = viewport(layout.pos.row = 2, layout.pos.col = 1:2)) 
    print(ggplot(mtcars, aes(wt)) + geom_histogram(), vp = viewport(layout.pos.row = 3, layout.pos.col = 1)) 
    print(ggplot(mtcars, aes(mpg)) + geom_histogram(), vp = viewport(layout.pos.row = 3, layout.pos.col = 2)) 
    
  3. 给top ro增加一个标题瓦特:

    grid.text("MAIN TITLE", vp = viewport(layout.pos.row = 1, layout.pos.col = 1:2)) 
    

从而造成:

enter image description here

+0

是有点混乱;特别是因为它不尊重布局。 – baptiste

+0

非常感谢@baptiste,我根据你的指导更新了我的答案(并且'+ 1'为你的答案和很棒的包装)。 – daroczig

+0

这种方法的问题是标题随图形变化。不过,我希望标题在窗口大小调整或打印为PDF时具有不变的高度。 – nccc

11

的另一种方法:使用碱情节

library(gridExtra) 
g = rectGrob() # dummy "plot" 
grid.arrange(g, g, g, g, ncol=2, top = "Main Title")