我有很多想把它们放在一页上的图,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)
Run Code Online (Sandbox Code Playgroud)
我现在能做的:
ggarrange(p1,p2, widths = c(2,1), labels = c("a", "b"))
Run Code Online (Sandbox Code Playgroud)
我真正想做但没能做到的:
ggarrange(plot_list, widths = c(2,1), labels = c("a", "b"))
Run Code Online (Sandbox Code Playgroud)
有谁知道怎么做?如果地块数量很大并且可能会不时发生变化,这可以节省大量时间。样本不是我的,从这里复制的。
======== 编辑 ========
根据下面的优秀答案,至少有可用的选项:1,请参阅已接受的答案,2,来自删除的答案,我几乎没有修改
do.call(ggarrange, c(plot_list[1:2], widths = c(2, 1), labels = c("a", "b")))
将参数传递给函数ggarrange,c()对我有用,但as.list()没有。
查看帮助文件?ggarrange。它有一个plotlist=参数。只需在那里传递您的清单。
ggarrange(plotlist=plot_list, widths = c(2,1), labels = c("a", "b"))
Run Code Online (Sandbox Code Playgroud)