【问题标题】:Organize ggplots from a for loop into a single array将 for 循环中的 ggplots 组织到单个数组中
【发布时间】:2021-02-11 01:42:48
【问题描述】:

我使用 for 循环成功地按一年中的月份(没有 1 月数据)创建了 18 个变量的图,但我只能让它们输出 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)
}

【问题讨论】:

    标签: r for-loop ggplot2


    【解决方案1】:
    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))
    

    这应该可以工作

    【讨论】:

    • 谢谢!这非常有效。我之前尝试过这个并认为它失败了,因为 RStudio 的绘图窗口中没有显示任何内容。现在我看到我必须使用缩放按钮来显示完整的情节。我更加努力,因为我知道你一定是对的。
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多