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