R:使用marrangeGrob生成PDF结果的第一页为空

10

我正在制作一些每页包含多个图形的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的第二页顶部甚至写着“第1页/共2页”,因此某些地方存在不一致。

您可以使用以下代码生成三个图表:Plotlist <- lapply(split(iris, iris$Species), function(S){ ggplot(S, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() }) - eipi10
啊...很简洁明了。谢谢你的提示! - shirewoman2
2个回答

9

我猜测最近在ggplot2中有些内容发生了改变,调用了需要打开设备来评估网格单元的网格函数。

你可以尝试使用以下解决方法:

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

1
这个也对我有用,还在周五晚上救了我的狗命! - Ömer An

4
当使用@baptiste的解决方法时,我仍然看到了一个空白的第一页。相反,我使用来自ggpubr的函数对来自绘图列表的多页绘图进行了处理(从这里):
multi.page <- ggpubr::ggarrange(plotlist = glist, nrow = 1, ncol = 2) 
ggpubr::ggexport(multi.page, filename = "multi.page.ggplot2.pdf")

我也是,Baptiste的解决方法没有改变任何东西。你的方法加了1。 - keepAlive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接