处理ggplot2和for循环

时间:2015-06-26 08:26:01

标签: r loops ggplot2

亲爱的StackOverflow社区,

多年来,我一直在社区寻求帮助。感谢那。现在我有一个问题:

我试图在带有for循环的列表中存储多个ggplot图。代码运行时没有错误,但只打印了最后一个图表中的数据。

# Preparation
metr_var <- c("schneehoehe",
              "wind_richtung",
              "wind_vmittel",
              "wind_vmax",
              "temp",
              "luftfeuchtigkeit"
             )
# Generating List
plot_list <- list()

# For Loop
for (j in metr_var) {
     p = ggplot(data = NULL, aes_string(x = arfang$arfang, y = arfang[, j])) 
     + geom_boxplot() + ylab(j) + theme_bw()
     dev.new()
     plot_list[[which(metr_var == j)]] = print(p)
}

现在,如果我运行该代码,则只打印 last ggplot命令中的aes。因此,每个图形都打印有不同的y轴,但数据保持不变。

我知道它与ggplot和aes有关,但我只是想知道问题是什么。我搜索了整个StackOverflow,其他建议(print,dev.new等)也无济于事。

感谢任何人帮助我。 斯坦

1 个答案:

答案 0 :(得分:0)

您可以这样做:

library(ggplot2)

vars <- c("mpg", "wt", "qsec")
plots <- list()

for (var in vars) {
  plots[[var]] <- ggplot(data=mtcars, aes_string(x=var)) + geom_histogram()
}

然后l将是一个包含3 ggplot的列表。如果您想要显示它们,您可以这样做:

plots