在 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()
}
我正在做一个需要 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()
}