我正在使用 afor loop
将 ggplots 分配给 a list
,然后将其传递给plot_grid()
(package cowplot
)。plot_grid
将多个 ggplot 并排放置在一个图中。这手动工作正常,但是当我使用 a 时for loop
,生成的最后一个图会在图中的每个子帧中重复(如下所示)。换句话说,所有子帧都显示相同的 ggplot。
这是一个玩具示例:
require(cowplot)
dfrm <- data.frame(A=1:10, B=10:1)
v <- c("A","B")
dfmsize <- nrow(dfrm)
myplots <- vector("list",2)
count = 1
for(i in v){
myplots[[count]] <- ggplot(dfrm, aes(x=1:dfmsize, y=dfrm[,i])) + geom_point() + labs(y=i)
count = count +1
}
plot_grid(plotlist=myplots)
预期数字:
图来自for loop
:
如this question中所述,我尝试将列表元素转换为grobs,如下所示:
mygrobs <- lapply(myplots, ggplotGrob)
plot_grid(plotlist=mygrobs)
但我得到了同样的结果。
我认为问题在于循环分配,而不是plot_grid()
,但我看不出我做错了什么。