4

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

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))
4

1 回答 1

13

由于误差线的数据位于相同的数据框中,因此您不需要在其中提供参数data=geom_errorbar()也不需要调用geom_errorbar()两次。

您应该提供 ingeom_errorbar() ymin和in 的ymax值,in也aes()将确保误差条根据值着色。要获得与条形相同的颜色,请添加相同的颜色名称。通过参数,您可以在条形中心获得误差条。color=suppaes()suppscale_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"))

在此处输入图像描述

于 2013-04-01T16:17:36.873 回答