2012-07-06 60 views
4

我正在用5條條製作堆疊條形圖。填充按照預期爲5個柱中的3個柱排序,但在第3個柱中,堆疊柱按錯誤順序顯示。我不允許張貼圖片,但在第3欄,顯示在頂部,應該是在杆底部的部分。R ggplot2堆疊條以錯誤的順序填充一個條

下面是一個簡化的例子的代碼。這裏是每x的組合只有一個觀察,在本例中填寫的變量,但我還是用stat_summary功能,因爲其實我是想用代碼與成千上萬的觀測數據幀。

什麼是錯的代碼,以及如何才能讓所有的酒吧顯示在正確的順序填充?

library(ggplot2) 
str(d2) 
d2 
ggplot(data=d2, aes(x=x,y=y, fill=f)) + stat_summary(fun.y="mean", geom="bar", position="stack") 
R.version 
packageVersion("ggplot2") 


> str(d2) 
'data.frame': 20 obs. of 3 variables: 
$ x: Factor w/ 5 levels "1CP","2PD","3AM",..: 1 1 1 1 2 2 2 2 3 3 ... 
$ y: num 0.3456 0.0699 0.6659 0.7358 0.3456 ... 
$ f: Ord.factor w/ 4 levels "N1"<"N2"<"N3"<..: 1 2 3 4 1 2 3 4 1 2 ... 
> d2 
     x   y f 
1  1CP 0.34556309 N1 
20021 1CP 0.06985134 N2 
25026 1CP 0.66592260 N3 
30031 1CP 0.73577575 N4 
2  2PD 0.34556309 N1 
20022 2PD 2.37410008 N2 
25027 2PD 0.74289404 N3 
30032 2PD 0.35221355 N4 
3  3AM 0.34556309 N1 
20023 3AM 0.80074871 N2 
25028 3AM 0.62036885 N3 
30033 3AM 0.09105373 N4 
4  4AP 0.34556309 N1 
20024 4AP 0.35911943 N2 
25029 4AP 0.12228402 N3 
30034 4AP 0.18667499 N4 
5  ALL 0.34556309 N1 
20025 ALL 0.97839760 N2 
25030 ALL 0.58666595 N3 
30035 ALL 0.36948221 N4 
> ggplot(data=d2, aes(x=x,y=y, fill=f)) + stat_summary(fun.y="mean", geom="bar", position="stack") 
> R.version 
      _           
platform  i386-pc-mingw32        
arch   i386           
os    mingw32          
system   i386, mingw32        
status   Patched          
major   2           
minor   15.1           
year   2012           
month   07           
day   04           
svn rev  59723          
language  R           
version.string R version 2.15.1 Patched (2012-07-04 r59723) 
nickname  Roasted Marshmallows       
> packageVersion("ggplot2") 
[1] ‘0.9.1’ 
> 

回答

2

我還報告這個問題作爲一個潛在的bug到ggplot2作者,誰提供這種解決方案:

我不知道這是否是一個錯誤或不 - 但你可以得到的加入 order=f到ggplot函數調用所需的行爲。我不確定爲什麼它不是默認的。

建議增加order=f解決了這個問題!

相關問題