您需要将 tg、sg 和您的图组合成一个列表。我会指定一个布局矩阵,它给你更多的控制,并使用 grid.arrange 进行绘图:
首先,我们有 tg,sg,我用 mtcars 制作了一个 3 的 plot_list。
library(ggplot2)
library(gridExtra)
library(grid)
tg <- textGrob('Title', gp = gpar(fontsize = 13, fontface = 'bold'))
sg <- textGrob('Subtitle', gp = gpar(fontsize = 10))
plot_list <- lapply(c("drat","wt","qsec"),function(i){
ggplot(mtcars,aes_string("mpg",i))+geom_point()
})
我们将您的地块合并到一个列表中:
g = c(list(tg),list(sg),plot_list)
所以现在 tg 是第一个元素,sg 是第二个元素,你的地块是 3-5。我们指定布局:
N = length(plot_list)
laym = rbind(rep(1,N),rep(2,N),(3:(N+2)))
laym
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 4 5
这个矩阵将有第一个(tg),1 占据第一行,sg 第二行,你的地块第三行。如果您有其他类型的安排或列表,您可以相应地更改它。
现在我们绘图,并使用 heights=... 指定相对高度
grid.arrange(grobs=g,layout_matrix=laym,heights=c(1,1,10))