2014-09-02 37 views
1

這可能與coord_flip有關嗎?我不設法得到免費的規模和errorbars與下面的代碼的好位置: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 
+0

如果您可以提供'df'的樣本,這將有所幫助。 – zx8754 2014-09-02 08:24:57

+0

請參閱https://github.com/hadley/ggplot2/issues/95,以及「facet_grid coord_flip比例尺」上的多個帖子 – Henrik 2014-09-02 08:40:15

+0

感謝您的鏈接! – user2165907 2014-09-02 09:12:34

回答

1

要獲得errorbars的好位置,一個解決辦法是將轉換爲因子變量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作爲數字,那麼你必須調整根據你的數據值of 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() 
+0

你是怎麼找到35值來調整位置閃避的? – user2165907 2014-09-02 09:14:37

+1

我發現通過實驗。 – 2014-09-02 09:19:31