2

並べ替えられた棒グラフを作成したい (ここに示されているものと同様: http://flowingdata.com/2008/08/19/3-worthwhile-alternatives-to-the-pie-chart/ )。以下のコードを実行すると、非常によく似た結果が得られますが、バーはソートされていません。頻度が最も高いバーがチャートの一番上になるようにバーを並べ替えるにはどうすればよいですか?

cat = c("CatA", "CatB", "CatC", "CatB", "CatB", "CatB", "CatB", "CatB", "CatB", "CatB")
dat = data.frame(Category = cat)

qplot(factor(Category), data=dat, geom="bar") + 
  geom_bar() +
  coord_flip()
4

3 に答える 3

3

試す:

dat$Category <- factor(dat$Category, levels=names(sort(tapply(dat$Category, dat$Category, length))))

これに関する私のブログ投稿を参照してください: http://trinkerrstuff.wordpress.com/2012/10/15/how-do-i-re-arrange-ordering-a-plot/

ここに画像の説明を入力

于 2013-04-20T20:51:14.053 に答える
2

ベースグラフィックでも実現できます:

barplot(sort(table(dat)), horiz=TRUE)
于 2013-04-20T20:30:24.933 に答える
1

ローマンの言うとおり、因子レベルを正しい順序で取得する必要があります。@sgibbs ロジックを使用すると、このようなものが機能します (私の完全な不慣れを許してggplotください:

qplot(factor(Category,levels=names(sort(table(cat)))), data=dat, geom="bar") + 
  geom_bar() +
  coord_flip()
于 2013-04-20T20:51:07.033 に答える