grid.arrange为列表中的所有图绘制相同的图形

时间:2015-01-05 23:06:13

标签: plot duplication

我正在运行R 3.1.1版。在RStudio中我遇到了grid.arrange的问题。

我正在阅读超过100家商店的销售数据,并随着时间的推移绘制销售情况。我也试图将图表分组以一次显示一组编号。

但是,经过多次尝试后,命令

do.call("grid.arrange", c(plotlist, ncol=nCol))

导致绘图矩阵中的所有绘图都相同。此外,绘制绘图列表中的各个项目表明所有绘图也作为相同的元素存储在绘图列表中。

以下是重复此问题的代码:

require(ggplot2)
require(gridExtra)

wss <- data.frame(ind=1:10, dep=(1:10))

plotlist <- list()

for (i in 1:4) {
  wss <- data.frame(ind=wss$ind, dep=(i*wss$dep))
  plotname <- paste0("Store", i, sep="")
  plotlist[[ plotname ]] <- ggplot(data=wss, aes(x=wss$ind, y=wss$dep)) + geom_line() + theme_bw() + ggtitle(paste0("Store #",i, sep="")) + ylab("Sales Revenue") + theme(axis.title.x=element_blank())
}

n <- length(plotlist)
nCol <- floor(sqrt(n))
do.call("grid.arrange", c(plotlist, ncol=nCol))

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并且用lapply代替了“ for”,似乎可以解决问题。

pList <- lapply(1:4, function(i){ 
  p <- ggplot(data=wss, aes(x=wss$ind, y=wss$dep)) + geom_line() + theme_bw() + ggtitle(paste0("Store #",i, sep="")) + ylab("Sales Revenue") + theme(axis.title.x=element_blank())
}
# print 1 by 1
for (i in 1:4){
print(pList[[i]])
}
print all
 g <- grid.arrange(grobs=pList, ncol=2, nrow=2)