在带有 ggplot 中的四个图的图形下方添加标题

Add title below the graph with four plots in ggplot

由于数据的隐私,我使用ggplot2中的mtcar数据集来解释我的问题。

有四个地块:

g1 <- ggplot(mtcars,aes(mpg,wt)) + geom_point()
g2 <- ggplot(mtcars,aes(mpg,disp)) + geom_point()
g3 <- ggplot(mtcars,aes(mpg,drat)) + geom_point()
g4 <- ggplot(mtcars,aes(mpg,qsec)) + geom_point()

我想把这四个图放在一个图中,所以我使用包 grid.Extra:

中的 grid.arrange() 函数
grid.arrange(g1,g2,g3,g4,ncol=2)

现在,我想在这些图中的每个图下方添加标题,如下图所示(我在Word中修改过,所以不漂亮) 问之前,我在SO中搜索过,我知道如何在一个图下面添加标题,例如,使用grid.text()或这三种方法Displaying text below the plot generated by ggplot2 or element_text(vjust=-10), but I can't apply it to four plots in one graph. Meanwhile, I have got some results in base graph How to add a title to each plot in R? or Common main title of a figure panel compiled with par(mfrow),问题是我想在 ggplot2 中进行,标题在每个图的下方,我该如何实现?谢谢!

你可以先用 arrangeGrob 包装每个地块,

g1 <- g2 <- g3 <- g4 <- ggplot()
titles = LETTERS[1:4]
plots = mapply(arrangeGrob, list(g1,g2,g3,g4), 
               bottom = titles, SIMPLIFY=FALSE)
grid.arrange(grobs = plots, ncol=2)