在 R 中通过迭代绘图

Plotting by iteration in R

我正在做一个需要 20 个不同条形图的项目。我发现我可以将它们一个一个地绘制出来,但是如果将来出现类似的问题,我正在寻找一种更有效的方法来做到这一点。

我已经尝试了一个标准的 for 循环,但是我的情节都是空的。

    library(lattice)
    par(mfrow = c(1,1))
    b_clr <- c("steelblue", "darkred")


    for(i in 1:20){
      png(paste(i,'.png', sep = ''))


    barchart(as.table(V[[i]]),
        main = map$V1[i],
        horizontal = FALSE,
        col = ifelse(V[[i]] > 0,
                     b_clr[1],
                     b_clr[2]),
        ylab = "Impact Value",
        scales = list(x=list(relation = "free",
                             rot = 55,
                             labels = top.df[[i]],
                             cex = 1.1)))
    dev.off()
    }

如果我把它从循环中取出来,并将所有 i 更改为单独的值,绘图就可以正常工作。但是,如果我 运行 它们作为一个循环,我就没有情节。任何人都可以提供任何建议吗?

您需要像这样使用 print() 包装对条形图的调用:

library(lattice)
par(mfrow = c(1,1))
b_clr <- c("steelblue", "darkred")

for(i in 1:3){

  png(paste(i,'test.png', sep = ''))

  map <- iris[i * c(1, 2, 3),]  

  print(barchart(map$Petal.Length,
           main = i,
           horizontal = FALSE,
           col = ifelse(map$Petal.Length > 0,
                        b_clr[1],
                        b_clr[2]),
           ylab = "Impact Value"))
  dev.off()
}