ggarrange绘制列表中的所有图

时间:2018-10-29 15:26:58

标签: r ggplot2

我有很多图想要将它们放在一页上,ggarrange在这方面做得很好,但是,似乎我必须将每个图都放在它们所在的列表中存储为该ggarrange函数的输入,而不是直接将列表作为输入,有关详细信息,请参见以下内容:

一个简单的例子:

p1 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
  geom_point()
p2 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
  geom_point() + facet_wrap( ~ cyl, ncol=2, scales = "free") +
  guides(colour="none") +
  theme()
plot_list = list(p1,p2) 

我现在可以做什么:

ggarrange(p1,p2, widths = c(2,1), labels = c("a", "b"))

我真正想要但未能做到的事情:

ggarrange(plot_list, widths = c(2,1), labels = c("a", "b"))

有人知道吗?如果地块数量很多,这可能会节省大量时间,并且可能会不时更改。 该示例不是我的,是从here复制而来的。

=======编辑=======

根据以下出色的答案,至少有一些可用的选项: 1,查看已接受的答案, 2,来自我删除的答案,修改不大 do.call(ggarrange, c(plot_list[1:2], widths = c(2, 1), labels = c("a", "b"))) 为了将参数传递给函数ggarrangec()为我工作,但as.list()却没有。

2 个答案:

答案 0 :(得分:1)

检出?ggarrange的帮助文件。它具有一个plotlist=参数。只需在此处传递您的列表即可。

ggarrange(plotlist=plot_list, widths = c(2,1), labels = c("a", "b"))

答案 1 :(得分:0)

egg::ggarrange(plots = plot_list, widths = c(2,1), labels = c("a", "b"))