使用coord_flip在ggplot2中自由缩放和errobar的位置

时间:2014-09-02 08:21:52

标签: r ggplot2

这可能与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

1 个答案:

答案 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()