通过R中的迭代绘图

时间:2017-06-17 21:31:02

标签: r plot lattice

我正在开展一个项目,要求我有20个不同的条形图。我发现我可以逐个绘制它们,但如果出现类似的问题,我正在寻找一种更有效的方法来实现这一目标。

我已经尝试过循环标准,但我的情节都是空的。

    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更改为单个值,则绘图工作正常。但是,如果我将它们作为循环运行,我就不会得到任何情节。任何人都可以提出任何建议吗?

1 个答案:

答案 0 :(得分:2)

您需要使用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()
}