我尝试创建一个既有错误条又有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()中,它会搞乱错误条的位置。
答案 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]]