【发布时间】:2015-07-13 04:42:05
【问题描述】:
我写了这段代码:
df = data.frame(a=c('A','A','B','B'),b=c('X','Y','X','Y'),c=c(1,2,3,2))
q = ggplot(df, aes(a, y=c,fill=b))+
geom_bar(position=position_dodge(), stat="identity")
path = data.frame(x=c(1,2),y=c(2,2))
q = q + geom_path(data=path,aes(x=x, y=y))
我想得到一个图,它有一条水平线,从前两个条的交界处开始,在最后两个条的交界处结束,高度(Y 轴上的位置)2。
但是,我的代码给了我一个错误:
“评估错误(expr,envir,enclos):找不到对象'b'”
更新: 感谢克里斯,将“填充”移动到 geom_bar 解决了原始问题。但是现在,一个新的问题发生了。我将代码更改为:
library(ggplot2)
df=data.frame(a=c('A','A','B','B'),b=c('X','Y','X','Y'),c=c(1,2,3,2),err=c(.1,.2,.1,.2))
q = ggplot(df, aes(a, y=c))+
geom_bar(aes(fill=b),position=position_dodge(), stat="identity")+
geom_errorbar(aes(ymin=c-err,ymax=c+err), width=0.3, lwd = 1, position=position_dodge(0.9))
path = data.frame(x=c(1,2),y=c(2,2))
q = q + geom_path(data=path,aes(x=x, y=y))
print(q)
因为原来的ggplot()函数中没有“填充”,所以误差线的位置搞乱了。
【问题讨论】: