我想根据预测变量的长度显示多个图。我创建了两个列表,然后使用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)))
}
答案 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)))
两个可变长度的ggplot对象列表,然后是参数列表。您需要提供数据和更完整的循环,以便我们知道如何帮助您弄清楚您做错了什么。