【问题标题】:display multiple plots in a list using grid.arrange in R使用 R 中的 grid.arrange 在列表中显示多个图
【发布时间】:2015-08-22 23:16:46
【问题描述】:

我想根据预测变量的长度显示多个图。我创建了两个列表,然后使用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)))

 }

【问题讨论】:

  • 这不是一个可重现的例子。您没有提供任何数据,ggplots 也没有 geom_s。此外,使用与基本函数相同的变量名(即length)也不是一个好主意。
  • 不久前我遇到了同样的问题stackoverflow.com/questions/31994387/…

标签: r


【解决方案1】:

作为答案发布只是为了显示评论中不可能的示例。

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

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)))

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

【讨论】:

  • 感谢您的回答。它现在似乎起作用了。我认为我的代码中存在一些错误,因此我收到了错误消息。
  • 是否可以修复您提供的示例中的绘图大小?
  • 不准确,但您可以在grid.arrange 中使用网格元素比例(IIRC 在arrangeGrob 帮助中有一些示例)。您可以将 what 与 coord_fixed 结合使用,以实现某种尺寸的可预测性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
相关资源
最近更新 更多