我正在嘗試使用ggplot2創建堆積條形圖,標籤顯示變量的累計和。但酒吧堆放的順序錯誤,所以標籤與酒吧不匹配。無法更改堆積條形圖中的訂單
該數據集是cabbage_exp來自gcookbook包。
該過程如下所示。
我第一次使用排列先訂單數據由品種第一,然後按日期。然後我用ddply創建一個新的列label_y反映重量累計總和,通過品種分組。
ce <- arrange(cabbage_exp, Cultivar, Date)
ce <- ddply(ce, "Cultivar", transform, label_y = cumsum(Weight))
經過上述兩步,數據看起來像這樣。
Cultivar Date Weight sd n se label_y
1 c39 d16 3.18 0.9566144 10 0.30250803 3.18
2 c39 d20 2.80 0.2788867 10 0.08819171 5.98
3 c39 d21 2.74 0.9834181 10 0.31098410 8.72
4 c52 d16 2.26 0.4452215 10 0.14079141 2.26
5 c52 d20 3.11 0.7908505 10 0.25008887 5.37
6 c52 d21 1.47 0.2110819 10 0.06674995 6.84
然後我使用下面的代碼創建了barplot。
ggplot(data=ce, aes(x=Cultivar, y=Weight, fill=Date)) +
geom_bar(stat="identity") + geom_text(aes(y=label_y, label=label_y),
vjust=1.5, colour="white")
該圖如下所示。 d16,d20和d21的條形碼順序不正確。
我然後試圖改變日期的順序,並使用下面的代碼再生的曲線圖。但該圖並未改變。
ggplot(data=ce, aes(x=Cultivar, y=Weight, fill=Date, order=desc(Date))) +
geom_bar(stat="identity") + geom_text(aes(y=label_y, label=label_y),
vjust=1.5, colour="white")
我不確定我哪裏出錯了。任何幫助將不勝感激。
非常感謝。
我設法通過使用'ce < - arrange(cabbage_exp,Cultivar,desc(Date))修改** Date **的順序來找到解決方案。 )'。這樣,條形圖至少與累積和標籤相對應通過這樣做,在* d16 *,* d20 *和* d21 *之間,* d16 *具有最大的累計和,這是不合邏輯的。 –
使'日期'成爲所需順序的級別。 – alistaire
如果您希望堆棧順序從下到上而不是從上到下,請參閱'geom_bar'中的'position = position_stack(reverse = TRUE)'。 – aosmith