【问题标题】:Unable to plot multiple plots in a loop?无法在一个循环中绘制多个图?
【发布时间】:2015-05-05 11:52:10
【问题描述】:

我的多图代码是

    for (i in 3:5) {
        #paste(names(normalized_ge_data))
        file_name = paste(as.character(i), ".png")
        png(file_name)
        g + geom_boxplot(aes(fill=factor(ge_data$hasServiced))) + geom_jitter()
        dev.off()
    }

我想要 3.png、4.png 等文件。 如何做到这一点?

【问题讨论】:

  • 我想如果你用plot(...)包围你的g + geom...行应该可以工作。
  • 喜欢plot(g + geom_boxplot(aes(fill=factor(ge_data$hasServiced))) + geom_jitter())?
  • 是的。我手头没有快速的例子来验证我的建议,但我想我已经这样做了。 print()plot() 应该可以工作。

标签: r loops ggplot2


【解决方案1】:

如果 OP 严格要求 print 绘图,最好的方法可能是在循环期间将绘图存储在列表中,然后打印列表中的每个项目。这是一个建议:

library(ggplot2)

plot_list <- list()

for (ii in 1:5){
  temp_df <- data.frame(x=rnorm(n=15, mean=0, sd=5),
                        y=rnorm(n=15, mean=0, sd=5),
                        z=rnorm(n=15, mean=0, sd=5))
  temp_plot <- ggplot(temp_df, aes(x=x, y=y, color=z))+
    geom_point()+
    theme_bw()+
    ggtitle(paste("Group", ii))
  plot_list[[ii]] <- temp_plot
}

lapply(plot_list, print)

当然,您可以更改 lapply 调用以使用 ggsave 或您想用来保存绘图的任何函数。

【讨论】:

    【解决方案2】:

    我认为 ggplot 最好的方法是使用 ggsave() 函数:

    for (i in 3:5) {
          qplot(mtcars[, i])
          ggsave(file = paste0("plot_", i, ".png"))
        }
    

    此处的文档:http://docs.ggplot2.org/0.9.2.1/ggsave.html

    【讨论】:

      【解决方案3】:

      按照上面@Daniel 的建议,这行得通:

      g <- ggplot(mtcars, aes(factor(cyl), mpg))
      
      for (i in 3:5) {
      #paste(names(normalized_ge_data))
      file_name = paste(as.character(i), ".png")
      png(file_name)
      print(g + geom_boxplot(aes(fill=factor(cyl))) + geom_jitter())
      dev.off()
      }
      

      【讨论】:

        【解决方案4】:

        我用一些示例数据尝试了您的示例,它对我有用:

        library(sjmisc)
        library(ggplot2)
        data(efc)
        
        for (i in 3:5) {
          file_name = paste0(as.character(i), ".png")
          png(file_name)
          plot(ggplot(efc, aes(x = 1, y = e17age)) + geom_boxplot() + geom_jitter())
          dev.off()
        }
        

        没有plot,只会创建白色的空png。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-30
          • 1970-01-01
          • 1970-01-01
          • 2015-08-29
          • 2022-10-15
          • 1970-01-01
          • 1970-01-01
          • 2020-09-06
          相关资源
          最近更新 更多