通过R中的迭代绘图
问题描述:
我正在研究一个需要20个不同条形图的项目。我发现我可以一个一个地绘制它们,但是如果出现类似的问题,我会在未来寻找一种更有效的方法来做到这一点。通过R中的迭代绘图
我已经尝试了循环的标准,但我的情节都是空的。
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()
}
你能不能提供一些数据,以反映? – akash87
这实质上是一个请求,我们会阅读R-FAQ 7.22 https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f。尝试阅读FAQ的其余部分。 –
谢谢。我不知道FAQ页面存在。这为我打开了一个非常赞赏的新资源。 – Nate