这就是我想要做的。我的数据集类似于R中的Loblolly,这是14种子的因子。我想运行每个种子的循环和散点图数据(由30X给出的标识,其中X是整数),显示y轴上的高度和x轴上的年龄。每个情节的标题是种子身份,“30X”
好主人,我不太清楚如何做到这一点。到目前为止我所知道的是如何绘制一个散点图如下:
xrange<-range(Loblolly$age)
yrange<-range(Loblolly$height)
plot(xrange, yrange, type="n", xlab="Age", ylab="Height")
你将如何迭代地为整个数据集做这件事。是的,十四个仍然是一个好的数字但是如果我想在另一个数据集中使用100种种子的类似类型代码,我认为你将不得不使用for循环,对吧?任何帮助在这里将不胜感激。
答案 0 :(得分:0)
嗯,这是一个存根,可以帮助你。我在列表中构建了不同的目标,然后遍历它们:
# multiple plots via a for, with the x = sprintf in the aes call providing contextualized strings as params
varList = list("Var1","Var2","Var3")
plot_list = list()
for (i in 1:3) {
gg = ggplot(data_set,aes(xfill=factor(RETAINED)))
gg = gg + aes_string(x = sprintf("log(%s)", varList[[i]]))
gg = gg + geom_density(alpha=.3) + labs(x = varList[[i]],y="Density")
gg = gg + ggtitle(paste("Distribution of ",varList[[i]],sep=" "))
plot_list[[i]] = gg
}
答案 1 :(得分:0)
您绝对可以为此创建for循环,但您也可以使用基于Seed
(按该列分组)分割数据集的方法,并为每个子数据集生成一个图。
首先将工作目录设置为要存储图表的文件夹。 然后运行:
library(dplyr)
Loblolly %>%
group_by(Seed) %>%
do({pdf(paste0(.$Seed,".pdf"))
plot(.$age, .$height, xlab="Age", ylab="Height", main=unique(.$Seed))
dev.off()})
您应该忽略以下错误:
Error: Results are not data frames at positions: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
并检查是否已创建pdfs。
如果您不想使用任何可以使用的库:
list_seeds = unique(Loblolly$Seed) # get a list of seeds
for (i in list_seeds) { # for every seed value
dt = Loblolly[Loblolly$Seed == i,] # get a sub-dataset that corresponds to that seed value
pdf(paste0(i,".pdf"))
plot(dt$age, dt$height, xlab="Age", ylab="Height", main=i)
dev.off()
}