2017-04-13 14 views
0

は私の簡単な資産のデータセットです:R ggplotで棒グラフを値でソートするにはどうすればよいですか?ここ

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

そして、これは私が手にプロットしたものである:ここで

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 

がコードである

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

使用 '資産$通貨< - 観測の' mean'に基づいて動作しますreorder'デフォルトではリオーダー(資産$通貨、資産$値、合計値) '' – MrFlick

答えて

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

enter image description here

+0

。総バーの高さでソートする場合は、関数を明示的に 'sum'に設定する必要があります。 – MrFlick

+0

あなたは正しいです。それを反映するように編集した – yeedle

関連する問題