geom_ribbon不起作用 - eval中的错误(expr,envir,enclos):找不到对象'变量'

时间:2013-11-10 15:42:49

标签: r plot ggplot2 ribbon

我尝试将geom_ribbon对象添加到我的ggplot2图中。在我的数据框中,我有NA个值(我猜)可能会导致问题。这是我拥有的数据框的可重现的例子:

base <- c(1:10, rep(NA, 10))
output1 <- c(rep(NA, 9), 10 - 0:10)
output2 <- c(rep(NA, 9), 10 + 0:10)
xaxis <- 1:20

df <- data.frame(xaxis, base, output1, output2)
df

     xaxis base output1 output2
  1      1    1      NA      NA
  2      2    2      NA      NA
  3      3    3      NA      NA
  4      4    4      NA      NA
  5      5    5      NA      NA
  6      6    6      NA      NA
  7      7    7      NA      NA
  8      8    8      NA      NA
  9      9    9      NA      NA
  10    10   10      10      10
  11    11   NA       9      11
  12    12   NA       8      12
  13    13   NA       7      13
  14    14   NA       6      14
  15    15   NA       5      15
  16    16   NA       4      16
  17    17   NA       3      17
  18    18   NA       2      18
  19    19   NA       1      19
  20    20   NA       0      20

我尝试使用ggplot2

绘制geom_ribbon对象
  dfm <- melt(df, id=1)
  ggplot(dfm, aes(x = xaxis, y = value, colour = variable)) + 
    geom_line(aes(group=variable)) + 
    geom_ribbon(data=df, aes(group = 1, ymin=output1, ymax=output2))

最后,我遇到了错误我无法处理

Error in eval(expr, envir, enclos) : object 'variable' not found

提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:15)

您收到此错误是因为variable用于功能aes()的{​​{1}}中的颜色。当您使用新数据框ggplot()添加geom_ribbon()时,尝试在新数据框中查找geom_ribbon()以将其用于颜色。要忽略此变量,请在variable中添加inherit.aes=FALSE - 因此您要告知所有参数都应该独立使用 - 这样您应该在geom_ribbon()中再次设置x=xaxis

geom_ribbon()

答案 1 :(得分:2)

color = variable的定义正在从原始ggplot图层继承。 在调用geom_ribbon时覆盖它以使其正常工作:geom_ribbon(data = df, aes(group = 1, ymin=output1, ymax=output2, color=I('red'))