【问题标题】:Lattice plots in for loop - empty images createdfor 循环中的格子图 - 创建空图像
【发布时间】:2019-06-05 08:30:55
【问题描述】:

我想在 for 循环中生成几个格子图,但它确实会创建空图像!!!

for (f in unique(df$month)) {
    plot.new()
    bwplot(x ~ country|type, data = df[df$month == f,], panel=function(...) {
        panel.abline(h=0, col="green")
        panel.bwplot(...)
    })
    savePlot(paste0("file_", f), "png")
}

当我“手动”运行 for 循环的内部时,它可以工作,但在循环中它会停止工作。为什么?

这是生成数据的代码:

set.seed(123)
n <- 300
country <- sample(c("Europe", "Africa", "Asia", "Australia"), n, replace = TRUE)
type <- sample(c("city", "river", "village"), n, replace = TRUE)
month <- sample(c("may", "june", "july"), n, replace = TRUE)
x <- rnorm(n)
df <- data.frame(x, country, type, month)

【问题讨论】:

    标签: r plot lattice


    【解决方案1】:

    第一部分是一个常见问题解答(R docs 和 SO):您必须print(mylatticeplot),当不互动时。

    此外,例如,您的方法在 RStudio 中不起作用。

    Error in savePlot(paste0("file_", f), "png") : 
      can only copy from 'windows' devices
    

    推荐的方式效果更好,工作量更少:

    png("file_%03d.png")
    for (f in unique(df$month)) {
      p = bwplot(x ~ country|type, data = df[df$month == f,], panel=function(...) {
        panel.abline(h=0, col="green")
        panel.bwplot(...)
      })
      print(p)
    }
    dev.off()
    

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 2020-07-23
      • 1970-01-01
      • 2022-07-07
      • 2019-09-04
      • 2023-03-19
      • 2021-01-06
      • 2015-08-18
      相关资源
      最近更新 更多