我需要生成并保存到 jpeg 多个简单的条形图,其中四个条形代表四个数据点。我已经成功地让代码循环,以所需的格式生成正确数量的 jpeg 文件条形图。但我无法确定为每个条形图插入相关数据所需的代码。我只能用每个文件/图中表示的相同数据生成多个图。我应该在代码中进行哪些更改以将相关数据插入每个图中?
下面是我的代码。
“names”是一个数据框,其中包含一个名为“personid”的变量。“personid”包含“mydata”中的所有变量名。
'mydata' 是这样设置的数据框:
J5A J5B J5C ...
w 2.1 1.3 3.2 ...
x 1.9 2.2 1.8 ...
y 1.5 2.4 1.8 ...
z 1.9 2.2 1.7 ...
如果我在代码中使用变量名(例如 mydata$J5A),我可以在单独的 jpeg 文件中生成 43 个图,这些文件都包含 J5A 的数据。不好。我的理解是我应该使用 mydata$kid.i,但显然不是,因为循环中止并且我得到错误
"Error in barplot.default(kid.i, xlab = "Language Skills", ylim = c(1, :
'height' must be a vector or a matrix"
代码:
allkids <- unique(names$personid)
for (i in 1 : 43) {
setwd("D:/R/BARPLOTS/")
kid.i <- allkids[i]
filename <- paste (kid.i, ".jpg", sep="")
jpeg(file = filename)
barplot(mydata$J5A, xlab = "Language Skills", ylim = c(1,3), xpd = FALSE,
names.arg=working2$varname, axes=FALSE, cex.names=.8, col=c("darkblue","red",
"darkgreen", "yellow"))
dev.off()
}
更新:对于那些感兴趣的人,这是删除了错误的最终工作代码:
allkids <- unique(names$personid)
for (i in 2 : 44) {
setwd("D:/R/BARPLOTS/")
kid.i <- allkids[i]
filename <- paste (kid.i, ".jpg", sep="")
jpeg(file = filename)
barplot(mydata[, i], xlab = "Language Skills", ylim = c(1,3), xpd = FALSE,
names.arg=working2$varname, axes=FALSE, cex.names=.8, col=c("darkblue","red",
"darkgreen", "yellow"))
dev.off()
}