首页 > 解决方案 > 将 for 循环中的 ggplots 组织到单个数组中

问题描述

我使用 for 循环成功地在一年中按月创建了 18 个变量的图(没有 1 月数据),但我只能让它们输出 1×1。我只是想将它们输出为具有 6 行和 3 列的单个图像(页面)。我想从 base-R 和 ggplot 宇宙中做到这一点。以下是成功绘图的代码。我如何排列成数组?

batspp<-names(Monthly_means[7:24])

for(i in batspp){
  plt<-ggplot(Monthly_means, aes_string(x="Month", y=i))+geom_col() + scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9","10","11","12"), label=c("1","2","3","4","5","6","7","8","9","10","11","12"))
  print(plt)
}

标签: rfor-loopggplot2

解决方案


library(gridExtra)
batspp<-names(Monthly_means[7:24])
plt = list()
for(i in batspp){plt[[i]]<-ggplot(Monthly_means, aes_string(x="Month", y=i))+geom_col() + scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9","10","11","12"), label=c("1","2","3","4","5","6","7","8","9","10","11","12")) }
do.call("grid.arrange",c(plt, nrow=6, ncol=3))

这应该有效


推荐阅读