如何构建排序条形图

时间:2013-04-20 19:56:30

标签: r ggplot2

我想创建一个排序条形图(类似于此处显示的条形图: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()

3 个答案:

答案 0 :(得分: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/

enter image description here

答案 1 :(得分:2)

您也可以使用基本图形来实现它:

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

答案 2 :(得分:1)

罗马是对的,你需要以正确的顺序获得你的因子水平。使用@sgibbs逻辑,这样的东西将起作用(我完全不熟悉ggplot

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