已在for循环中创建的多个ggplot2图的网格

作为一个新的ggplot2用户,我有点迷失了很多可能性,并且很难在网上找到我认为是一个简单问题的简单答案。

我想在同一张纸上显示ggplot2的多个图表,但知道这些图表来自for循环。

以下示例不编译,只是为了说明:

for(i in c(1:n)){                                   
  for(j in c(1:m)){
    ..........  # some data production
    p <- ggplot(df.all) + geom_bar(aes_string(x=class.names[i],fill=var.names[j])
}}

在这里,p被覆盖了,但是我想要有一个矩阵或者一个列表,在这个列表中我可以把所有的p作为他们生成的,然后一个简单的函数就像

display_in_a_grid(list_of_ggplot_plots)

但据我所知,我无法制作一个剧情矩阵的列表,也没有找到一个只有一个参数输入的函数。

关于我看过的东西:

包gridExtra中的“arrangeGrob”不起作用,因为它需要每个绘图的明确名称(例如:p1,p2,p3,...),如http://code.google.com/p/gridextra/wiki/ arrangeGrob

ggplot2的“facet”方法不适用于我的数据集的组织(或相反:p)

你有一个简单的方法来管理这个?

谢谢,

弗朗索瓦


我会倾向于同意里奇,但如果你想自己安排他们:

library(gridExtra)
library(ggplot2)
p <- list()
for(i in 1:4){
  p[[i]] <- qplot(1:10,10:1,main=i)
}
do.call(grid.arrange,p)

看看最后的例子?arrangeGrob寻找消除for循环的方法:

plots = lapply(1:5, function(.x) qplot(1:10,rnorm(10),main=paste("plot",.x)))
require(gridExtra)
do.call(grid.arrange,  plots)
链接地址: http://www.djcxy.com/p/30873.html

上一篇: Grid of multiple ggplot2 plots which have been made in a for loop

下一篇: Saving grid.arrange() plot to file