ggplot2绘制相同的图形而不是不同的图形

时间:2018-08-08 13:51:32

标签: r for-loop ggplot2

最初,我想在for循环中使用ggplot2,因为它没有保存第一个图,而是在循环的第二次迭代后保存了第二个图,所以它不起作用。以下代码说明了这一点。不必使用for循环来重现此错误。如果我执行这样的代码,它将起作用:

complex(gammainc(...))

如果library(ggplot2) df <- data.frame(x = c(1,2,3,4,5), y1 = c(10,55,32,78,47), y2 = c(-1.3,-2.5,-4.1,-1.7,-3.6)) hori <- c("y1", "y2") pmse <- list() pmse[[1]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[1])))))+ geom_line()+ labs(title = paste(hori[1]))+ ylab(paste(hori[1])) pmse[[2]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[2])))))+ geom_line()+ labs(title = paste(hori[2]))+ ylab(paste(hori[2])) pmse[[1]] pmse[[2]] 12取代,而ii = 1分别被保存了两次。不知何故,第一个情节似乎被覆盖了:

i = 2

如何使用变量(我覆盖)而不是数字pmse <- list() i <- 1 pmse[[i]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[i])))))+ geom_line()+ labs(title = paste(hori[i]))+ ylab(paste(hori[i])) i <- 2 pmse[[i]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[i])))))+ geom_line()+ labs(title = paste(hori[i]))+ ylab(paste(hori[i])) pmse[[1]] pmse[[2]] 1来重现第一个代码段?当我使用2i = 1并将第二个“迭代”中的j = 2替换为i时,就可以了。我想念什么吗?我该如何解决?

1 个答案:

答案 0 :(得分:0)

我建议重新考虑与ggplot相关的数据的组织方式,并充分利用facet_wrap

df %>% 
  gather(key, value, -x) %>% 
  ggplot(., aes(x=x, y=value)) + 
  geom_line() +  
  facet_wrap(~key)