在条形图上水平居中误差条(geom_errorbar)(geom_bar)

jmu*_*jmu 4 r ggplot2

如何将误差线定位在适当颜色的条的中心?

df1 <- data.frame(
  supp = c("OJ","OJ","OJ","VC","VC","VC"),
  dose = c(0.5,1,2,0.5,1,2),
  len = c(13.23,22.7,26.06,7.98,16.77,26.14),
  se = c(1.41,1.27,0.84,0.87,0.8,1.52)
)

df1$dose <- factor(df1$dose)
ggplot(df1, aes(x=dose, y=len, fill=supp)) +      
geom_bar(stat="identity", position=position_dodge()) +  
scale_fill_manual(name = "", values = c("deepskyblue1", "green")) +
geom_errorbar(data = df1[1:3,], aes(ymin=len-se, ymax=len+se), width=.4, colour=c("deepskyblue1"), position=position_dodge(.9)) +
geom_errorbar(data = df1[4:6,], aes(ymin=len-se, ymax=len+se), width=.4, colour=c("green"), position=position_dodge(.9))
Run Code Online (Sandbox Code Playgroud)

Did*_*rts 13

由于错误条的数据位于同一数据框中,其中条形数据不需要提供参数data=,geom_errorbar()也不需要调用geom_errorbar()两次.

你应该提供geom_errorbar() yminymaxaes(),也color=suppaes()将确保误差线是根据颜色的supp值.要获得与条形图相同的颜色,请添加scale_color_manual()相同的颜色名称.通过参数,position=position_dodge(0.9)您可以在条形图的中心获取错误栏.

ggplot(df1, aes(x=dose, y=len, fill=supp)) +      
  geom_bar(stat="identity", position=position_dodge()) +  
  scale_fill_manual(name = "", values = c("deepskyblue1", "green")) +
  geom_errorbar(aes(ymin=len-se, ymax=len+se,color=supp), width=.4,
       position=position_dodge(.9))+
  scale_color_manual(name = "", values = c("deepskyblue1", "green"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述