如何与ggplotGrob()一起使用lapply?

时间:2014-10-06 20:03:42

标签: r ggplot2 lapply grob

我正在尝试将函数ggplotGrob()应用于使用lapply的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)

我收到错误消息

  

在arrangeGrob中出错(...,as.table = as.table,clip = clip,main = main,:input必须是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

0 个答案:

没有答案