R:使用marrangeGrob使pdf结果显示为空白首页

时间:2017-01-23 18:30:22

标签: r ggplot2 gridextra

我正在制作一些每页都有多个图形的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页”,所以在某处有一些脱节。

2 个答案:

答案 0 :(得分:6)

我的猜测是,ggplot2最近改变了一些东西来调用网格函数来评估需要打开设备的网格单元。

您可以尝试此解决方法,

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

答案 1 :(得分:1)

使用@ baptiste的解决方法时,我仍然出现空白的第一页。来自ggpubr的多页绘图中的函数来自我的工作(来自here):

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