2013-04-20 116 views
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() 
+2

您需要訂購您的因子水平 – 2013-04-20 19:59:15

+0

這不是重複的我在問如何訂購一個簡單的histogra m與單個維度的data.frame。 – Martin 2013-04-20 20:18:52

+0

@Martin它是一個重複的任何時候,你使用的話[排序和圖表/繪圖](http://trinkerrstuff.wordpress.com/2012/10/15/how-do-i-re-arrange-ordering -a-plot /)你(幾乎總是)需要重新排列因子水平。 – 2013-04-20 20:55:36

回答

2

你可以用鹼顯卡實現它,太:

barplot(sort(table(dat)), horiz=TRUE) 
+0

謝謝你的想法sgibb!但我需要堅持gpplot2圖表的外觀和感覺...... :( – Martin 2013-04-20 20:39:24

1

羅馬是正確的,你需要得到正確的順序你的因子水平。使用@sgibbs邏輯,這樣的事情就可以了(原諒我總不熟悉ggplot

qplot(factor(Category,levels=names(sort(table(cat)))), data=dat, geom="bar") + 
    geom_bar() + 
    coord_flip()