使用R中的grid.arrange在列表中显示多个图

时间:2015-08-22 23:16:46

标签: r

我想根据预测变量的长度显示多个图。我创建了两个列表,然后使用grid.arrange函数显示这些列表中的图,但是我收到以下错误消息 - 'only 'grobs' allowed in "gList"。即使我尝试只使用一个列表p,我得到相同的错误消息。请帮忙!

 library(ggplot2)
 library(gridExtra)


 # dependent1 variable
 # dependent2 variable 
 # predictor_vector is a vector of predictors

 plot_output(data, dependent1, dependent2, predictor_vector)
 {

 length<-length(predictor_vector)

  p<-list()
  g<-list()

  for( i in 1:length)
  {
  p[[i]]<-ggplot(data, aes(y=dependent1, x=predictor_vector[i]))
  g[[i]]<-ggplot(data, aes(y=dependent2, x=predictor_vector[i]))
  }


  do.call("grid.arrange", c(p, g, list(ncol=2)))

 }

1 个答案:

答案 0 :(得分:11)

仅作为答案发布,以显示评论中不可能的示例。

您尝试使用的习语是正确的:

library(ggplot2)
library(gridExtra)

p <- list(ggplot(mtcars, aes(x=wt, y=mpg))+geom_point(col="black"),
          ggplot(mtcars, aes(x=wt, y=mpg))+geom_point(col="orange"),
          ggplot(mtcars, aes(x=mpg, y=wt))+geom_point(col="blue"))

g <- list(ggplot(mtcars, aes(x=wt, y=mpg))+geom_point(col="red"),
          ggplot(mtcars, aes(x=mpg, y=wt))+geom_point(col="green"))

do.call(grid.arrange, c(p, g, list(ncol=2)))

enter image description here

两个可变长度的ggplot对象列表,然后是参数列表。您需要提供数据和更完整的循环,以便我们知道如何帮助您弄清楚您做错了什么。