循环在boxplots(数据框列)

时间:2017-04-03 10:03:51

标签: r loops for-loop ggplot2 boxplot

我试图生成很多箱图并将它们保存在单独的文件中。每个箱图应基于数据帧中的变量。我或多或少试图“复制”:Looping over plots的解决方案,但这不起作用。

for(i in c("varname1","varname2")) {
  png(paste(i, "png", sep = "."), width = 400, height = 400)
  print(ggplot(df) + geom_boxplot(aes_string(y =seq_along(i)  , x = i)) +    
  theme_bw()) 
  dev.off()
}

我也搜索了这个网站的解决方案,但找不到有用的东西。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。应删除'seq_along'。 我还改变了一些其他的东西:我添加了“历史记录”。作为文件名中的前缀,删除x刻度中的视觉元素并删除缺失以防止警告。

for(i in c("varname1", "varname2", "varname3")) {
png(paste("Hist",i, "png", sep = "."), width = 400, height = 400)
print(ggplot(df) + geom_boxplot(aes_string(y=i, x = 0), na.rm=TRUE) + 
scale_x_discrete(breaks=NULL) + xlab(NULL) + theme_bw())
dev.off()
}

对我来说有点奇怪的是,ggplot不知何故需要一个X变量。我通过将x设置为零并将这些元素隐藏在视觉效果中来忽略这一点。所以这有点烦人。