首页 > 解决方案 > 无法打印我需要的所有 ggplot 图表

问题描述

在Looping over variables in ggplot中有一个关于在循环中使用 ggplot 和其他创造性方式的很好的讨论。但是,讨论并没有完全解决我的问题。

我有一个垂直数据集,我需要从循环中创建图。代码中没有错误,但我的代码只打印最后一个图。想不通为什么。这是一个可重现的示例:

df <- cbind.data.frame(var = sample(c('a','b'), size = 100, replace = TRUE), 
                   grp = sample(c('x','y'), size = 100, replace = TRUE), value = rnorm(100))

for (i in 2) {

  plot.df <- df[which(df$var == c('a','b')[i]),] 
  print(ggplot(plot.df, aes(x = 1:nrow(plot.df), y = value, color = grp)) + 
      geom_line() + ggtitle(c('a','b')[i]))

}

标签: rggplot2

解决方案


@EJJ 的评论是正确的,你的循环不是你需要的东西

for (i in seq_along(1:nlevels(factor(df$var))))

library(ggplot2)
library(dplyr)

df <- cbind.data.frame(var = sample(c('a','b'), size = 100, replace = TRUE), 
                       grp = sample(c('x','y'), size = 100, replace = TRUE), value = rnorm(100))


for (i in seq_along(1:nlevels(factor(df$var)))) {

   plot.df <- df[which(df$var == c('a','b')[i]),] 
   print(ggplot(plot.df, aes(x = 1:nrow(plot.df), y = value, color = grp)) + 
            geom_line() + ggtitle(c('a','b')[i]))

}


推荐阅读