我正在尝试使用 lapply 将函数 ggplotGrob() 应用于 ggplots 列表,但似乎无法从中获取 grob 对象列表。对于这个项目,根据用户输入生成可变数量的图,我需要一种动态的方式来生成网格。我需要从图中定义 grobs,以便在显示之前为所有图表分配相同的宽度。
例如,我有地块 p1 和 p2。如果我手动进行:
gp1 <- ggplotGrob(p1)
gp2 <- ggplotGrob(p2)
grid.arrange(gp1, gp2, ncol=1)
我得到了我的 2 个地块。
现在如果我这样做
gp_list <- list(gp1,gp2)
grid.arrange(gp_list, ncol=1)
我收到一条错误消息
安排Grob(...,as.table = as.table,clip = clip,main = main,:输入必须是grobs!
我尝试使用 unlist() 但我得到了同样的错误
grid.arrange(unlist(gp_list), ncol=1)
最终,我想通过 lapply 建立 grobs 列表
gp_list <- lapply(plot_list, function(x) ggplotGrob(x))
并且能够使用 grid.arrange 来安排所有的 grobs。我觉得我忘记了从列表中检索每个对象作为 grob 的简单步骤。有人解决了这个问题吗?
谢谢
> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] pryr_0.1 WGCNA_1.41-1 flashClust_1.01-2 dynamicTreeCut_1.62 gridExtra_0.9.1 ggplot2_1.0.0
[7] gplots_2.14.1 hash_2.2.6 shiny_0.10.1 Biobase_2.24.0 BiocGenerics_0.10.0