web-dev-qa-db-ja.com

ggplotでのバーの順序付け

私はこのフォーラムで答えを見ましたが、この特定の問題に対する答えを見つけることができないようです。次のデータがあり、棒をアルファベット順に並べるのではなく、「値」の観点から棒を最大から最小に並べた棒グラフを作成します。

breadth_data <- read.table(textConnection("Stakeholder  Value
'Grantseekers'  0.90
'Donors'    0.89
'Community' 0.55
'Hurricane Relief Fund' 0.24
'Media' 0.19
'Employment Seekers'    0.12
'Affiliates'    0.10
'Youth' 0.09
'Women' 0.02
'Former Board Members'  0.01"), header=TRUE)

次に、基本的な棒グラフ:

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value))
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('')

StackOverflowで見たさまざまな並べ替えと変換の多くを試しましたが、動作するものを見つけることができないようです。これはかなり簡単だと確信していますが、助けていただければ幸いです!

ありがとう、

グレッグ

47
Gregory Saxton

関数reorder()が必要です:

_breadth_data <- transform(breadth_data, 
                          Stakeholder = reorder(Stakeholder, Value))
_

与えるもの:

reordered barplot

それらを逆方向にしたい場合、簡単な方法は、order()呼び出し内のValuereorder()を使用することです。

_breadth_data <- transform(breadth_data,
                          Stakeholder = reorder(Stakeholder, 
                                                order(Value, decreasing = TRUE)))
_
70
Gavin Simpson