如何在条形图中使用geom_path在ggplot2中添加一行

时间:2015-07-13 04:42:05

标签: r ggplot2

我写了这段代码:

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的交界处结束。

但是,我的代码给了我一个错误:

  

“eval中的错误(expr,envir,enclos):找不到对象'b'”

更新: 感谢Chris,将“填充”移动到geom_bar解决了orignal问题。但现在,出现了一个新问题。我将代码更改为:

    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)

因为“fill”不在原始ggplot()函数中,所以错误栏的位置搞砸了。

1 个答案:

答案 0 :(得分:0)

您应该在第一次aes来电中移动ggplot

q <- ggplot(df, aes(a, y=c)) +
    geom_bar(aes(fill=b), 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))

编辑:添加完整性代码