2017-04-13 46 views
0

這裏是我的簡單的資產數據集:如何使用R ggplot按值排序條形圖?

ID Type Currency Value 
a Bond GBP   10 
b Bond EUR   20 
c Stock GBP   3 
d Stock GBP   60 
e Bond GBP   8 
f Bond USD   39 
g Stock USD   1 

下面是代碼:

assets <- read_excel("C:/R/SampleData.xlsx") 
g <- ggplot(assets, aes(Currency, Value)) 
g + geom_col() 

這是我得到的情節:

bar plot

我想創建相同的情節,但是按價值排序的酒吧(按降序排列) 如何實現此目的? 我曾嘗試下面的代碼:

assets$Currency <- factor(assets$Currency, levels = assets$Currency[order(assets$Value)]) 

,但我得到以下警告消息,並且圖表仍不能正確排序:

Warning message: 
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, : 
duplicated levels in factors are deprecated 

謝謝!

+0

使用'$資產外幣< - 重新排序(資產$貨幣,資產價值$,合計)' – MrFlick

回答

0
ggplot(assets, aes(reorder(Currency, -Value, sum), Value)) + 
    geom_col() 

enter image description here

+0

通過reorder'作品基於觀測的'mean'默認的'。如果您想按總高度進行排序,則需要明確將函數設置爲'sum' – MrFlick

+0

您是對的。我編輯來反映這一點 – yeedle