R:使用 marrangeGrob 制作 pdf 结果第一页空白

R: Using marrangeGrob to make pdf results in blank first page

我正在制作一些 pdf 文件,每页都有多个图表,当我使用 gridextra 包中的 marrangeGrob 制作这些图表时,第一页总是空白。如何让情节从第一页开始?下面是一些示例代码:

library(gridextra)
library(ggplot2)
data(iris)

Plotlist <- list()

Plotlist[[1]] <- ggplot(data = subset(iris, Species == "setosa"),
                         aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

Plotlist[[2]] <- ggplot(data = subset(iris, Species == "versicolor"),
                        aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

Plotlist[[3]] <- ggplot(data = subset(iris, Species == "virginica"),
                        aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

pdf("iris.pdf", width = 8.5, height = 11)
marrangeGrob(Plotlist, nrow = 2, ncol = 1)
dev.off()

pdf 的第 2 页甚至在顶部说 "Page 1 of 2",所以某处有些断开。

我的猜测是最近在 ggplot2 中进行了一些更改,以调用网格函数来评估需要打开设备的网格单元。

您可以试试这个解决方法,

glist <- lapply(Plotlist, ggplotGrob)
ggsave("iris.pdf", marrangeGrob(glist, nrow = 2, ncol = 1))

使用@baptiste 的变通方法时,第一页仍然是空白。 ggpubr 中用于 multi-page 从绘图列表中绘制的函数对我有用(来自 here):

multi.page <- ggpubr::ggarrange(plotlist = glist, nrow = 1, ncol = 2) 
ggpubr::ggexport(multi.page, filename = "multi.page.ggplot2.pdf")