小编som*_*hat的帖子

R分配ggplot对象以循环列出

我正在使用 afor loop将 ggplots 分配给 a list,然后将其传递给plot_grid()(package cowplot)。plot_grid将多个 ggplots 并排放置在一个图中。这手动工作正常,但是当我使用 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)
Run Code Online (Sandbox Code Playgroud)

预期图:

在此处输入图片说明

图自for loop

在此处输入图片说明

我尝试将列表元素转换为 grobs,如本问题所述,如下所示:

mygrobs <- lapply(myplots, ggplotGrob)
plot_grid(plotlist=mygrobs)
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的结果。

我认为问题在于循环分配,而不是plot_grid(),但我看不出我做错了什么。

loops r ggplot2 cowplot

2
推荐指数
1
解决办法
3986
查看次数

标签 统计

cowplot ×1

ggplot2 ×1

loops ×1

r ×1