我知道已经问过类似的问题,所以很抱歉这是一个多余的问题!但是,我似乎找不到找到一种解决方案,可以将列表中的多个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(),但是我似乎无法在文件中添加通用图例。
真的很感谢您的帮助!
答案 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的评论,您忘记了*
符号。