如何在ggplot2中同时正确定位geom_path和geom_errorbar

时间:2015-07-13 17:44:20

标签: r ggplot2

我尝试创建一个既有错误条又有p_value的条形图。但是,我无法正确定位错误条和p_value条。这是我的代码:

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.25,1.75),y=c(3.5,3.5))
q = q + geom_path(data=path,aes(x=x, y=y),size=2)
q = q+ annotate('text',x=1.5,y=4, label='p=0.03')

print(q)

问题似乎是由“填充”参数引起的。如果我将“fill = b”放在ggplot()中,它会弄乱p_value栏的位置。如果我把“fill = b”放在geom_bar()中,它会搞乱错误条的位置。

1 个答案:

答案 0 :(得分:2)

group=b内添加geom_errorbar,以便position_dodge知道该怎么做

  geom_errorbar(aes(ymin=c-err,ymax=c+err, group=b), width=0.3, lwd = 1, position=position_dodge(0.9))

为了将来参考,您可以使用ggplot_build

直接访问条形图的位置
## Get bar positions
stuff <- ggplot_build(q)
dat <- stuff[[1]][[2]]