绘制存储在多个页面列表中的ggplots

时间:2019-07-11 00:50:26

标签: r ggplot2

我知道已经问过类似的问题,所以很抱歉这是一个多余的问题!但是,我似乎找不到找到一种解决方案,可以将列表中的多个ggplots排列到几页中的一页上。

我有一个大约100个ggplots的列表-我想在一页上绘制每4个ggplots,然后遍历该列表,直到绘制完所有ggplots。然后,我想将大约25页导出到单个pdf文件中。

到目前为止,我已经尝试过:

pdf("plots.pdf", onefile = TRUE, width = 11, height = 8.5)
for (i in 0:24) {
    ggarrange(list[[4i+1]], list[[4i+2]], list[[4i+3]], list[[4i+4]], 
    nrow = 2, ncol = 2, common.legend = TRUE, legend = 'bottom'
}
dev.off()

但是,我收到下标超出范围的错误。我尝试缩小for循环的范围来尝试克服此错误,但它返回的是相同错误。我也知道我们可以使用marrangeGrob(),但是我似乎无法在文件中添加通用图例。

真的很感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您可以提供一些小图进行测试,将很有帮助。

我尝试重新创建您的方案,发现除非我明确print ggarrange对象,否则该方案不起作用。

plot <- ggplot(mtcars, aes(x = cyl, y = mpg)) +
  geom_point()

plot_list <- list(plot, plot, plot, plot, plot, plot, plot, plot)

pdf("test.pdf", 11, 8.5)
for(i in 0:3){
  print(ggarrange(plot_list[[2*i + 1]], plot_list[[2*i + 1]], nrow = 2, ncol = 1))
}

dev.off()

这对我有用。注意到akrun的评论,您忘记了*符号。