这可能与coord_flip有关吗?我没有设法通过以下代码获得错误栏的自由规模和良好位置:
ggplot(df, aes(x=d, y=value.mean, fill=s))+
facet_grid(.~variable,
scales="free_y")+
geom_bar(stat="identity",
position=position_dodge())+
geom_errorbar(aes(ymin=value.mean-value.se, ymax=value.mean+value.se),
position=position_dodge(.9),
width=3)+
scale_fill_manual(values=c("#7fc97f","#beaed4"))+
scale_x_continuous(breaks=c(-60,-100))+
coord_flip()+
theme_bw()
以下是df:
的示例s d variable value.mean value.se
f -100 aa 315 48
g -100 aa 394 73
f -60 aa 284 48
g -60 aa 293 82
f -100 bb 60 6
g -100 bb 55 7
f -60 bb 116 14
g -60 bb 123 21
答案 0 :(得分:1)
要获得错误栏的良好位置,一种解决方案是转换为因子变量d
,然后position=position_dodge(0.9)
将起作用
ggplot(df, aes(x=as.factor(d), y=value.mean, fill=s))+
facet_grid(.~variable)+
geom_bar(stat="identity",
position=position_dodge())+
geom_errorbar(aes(ymin=value.mean-value.se, ymax=value.mean+value.se),
position=position_dodge(width=0.9),
width=0.3)+
scale_fill_manual(values=c("#7fc97f","#beaed4"))+
coord_flip()+
theme_bw()
如果您将d设为数字,则必须根据数据值调整width=
position_dodge()
。在这种情况下,将错误放置定位为35。
ggplot(df, aes(x=d, y=value.mean, fill=s))+
facet_grid(.~variable,
scales="free_x")+
geom_bar(stat="identity",
position=position_dodge())+
geom_errorbar(aes(ymin=value.mean-value.se, ymax=value.mean+value.se),
position=position_dodge(width=35),
width=10)+
scale_fill_manual(values=c("#7fc97f","#beaed4"))+
scale_x_continuous(breaks=c(-60,-100))+
coord_flip()+
theme_bw()