I try to add a geom_ribbon
object to my ggplot2
plot. In my data frame, I have NA
values that (I guess) may cause a problem. This is a reproducible example of the data frame I have:
我尝试将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
And my attempt to plot a ggplot2
object with a geom_ribbon
:
我尝试使用geom_ribbon绘制ggplot2对象:
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))
And, eventually, I got an error I cannot deal with:
最后,我得到了一个我无法处理的错误:
Error in eval(expr, envir, enclos) : object 'variable' not found
Thank you in advance for any suggestions.
提前感谢您的任何建议。
2 个解决方案
#1
14
You got this error because variable
is used for color in aes()
of function ggplot()
. When you add geom_ribbon()
with new data frame geom_ribbon()
tries to find variable
in new data frame to use it for colors. To ignore this variable add inherit.aes=FALSE
inside geom_ribbon()
- so you are telling that all parameters should be taken independently - that's way you should set x=xaxis
again in geom_ribbon()
.
您收到此错误,因为变量用于函数ggplot()的aes()中的颜色。当您使用新数据框添加geom_ribbon()时,geom_ribbon()会尝试在新数据框中查找变量以将其用于颜色。要忽略此变量,请在geom_ribbon()中添加inherit.aes = FALSE - 因此您要告知所有参数都应该独立进行 - 这样您应该在geom_ribbon()中再次设置x = xaxis。
ggplot(dfm, aes(x = xaxis, y = value, colour = variable)) +
geom_line(aes(group=variable)) +
geom_ribbon(data=df, aes(group = 1, x = xaxis,ymin=output1, ymax=output2),
inherit.aes=FALSE)
#2
2
The definition for color = variable
is being carried over from the original ggplot
layer. Override it in the call to geom_ribbon
to make it work: geom_ribbon(data = df, aes(group = 1, ymin=output1, ymax=output2, color=I('red'))
.
color = variable的定义是从原始ggplot层继承的。在对geom_ribbon的调用中覆盖它以使其工作:geom_ribbon(data = df,aes(group = 1,ymin = output1,ymax = output2,color = I('red'))。
#1
14
You got this error because variable
is used for color in aes()
of function ggplot()
. When you add geom_ribbon()
with new data frame geom_ribbon()
tries to find variable
in new data frame to use it for colors. To ignore this variable add inherit.aes=FALSE
inside geom_ribbon()
- so you are telling that all parameters should be taken independently - that's way you should set x=xaxis
again in geom_ribbon()
.
您收到此错误,因为变量用于函数ggplot()的aes()中的颜色。当您使用新数据框添加geom_ribbon()时,geom_ribbon()会尝试在新数据框中查找变量以将其用于颜色。要忽略此变量,请在geom_ribbon()中添加inherit.aes = FALSE - 因此您要告知所有参数都应该独立进行 - 这样您应该在geom_ribbon()中再次设置x = xaxis。
ggplot(dfm, aes(x = xaxis, y = value, colour = variable)) +
geom_line(aes(group=variable)) +
geom_ribbon(data=df, aes(group = 1, x = xaxis,ymin=output1, ymax=output2),
inherit.aes=FALSE)
#2
2
The definition for color = variable
is being carried over from the original ggplot
layer. Override it in the call to geom_ribbon
to make it work: geom_ribbon(data = df, aes(group = 1, ymin=output1, ymax=output2, color=I('red'))
.
color = variable的定义是从原始ggplot层继承的。在对geom_ribbon的调用中覆盖它以使其工作:geom_ribbon(data = df,aes(group = 1,ymin = output1,ymax = output2,color = I('red'))。