我有很多图想要将它们放在一页上,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")))
为了将参数传递给函数ggarrange
,c()
为我工作,但as.list()
却没有。
答案 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"))