我正在尝试制作一个条形图,其中最大的条形最靠近 y 轴,最短的条形最远。所以这有点像表格,我有姓名位置 1 James
我正在尝试制作一个条形图,其中最大的条形最靠近 y 轴,最短的条形最远。所以这有点像我的表格
Name Position
1 James Goalkeeper
2 Frank Goalkeeper
3 Jean Defense
4 Steve Defense
5 John Defense
6 Tim Striker
因此,我尝试构建一个条形图,以显示按位置划分的球员人数
p <- ggplot(theTable, aes(x = Position)) + geom_bar(binwidth = 1)
但图表首先显示守门员栏,然后是防守栏,最后是前锋栏。我希望图表按顺序排列,以便防守栏最靠近 y 轴,然后是守门员栏,最后是前锋栏。谢谢
我认为已经提供的解决方案过于冗长。使用 ggplot 绘制频率排序条形图的更简洁方法是
ggplot(theTable, aes(x=reorder(Position, -table(Position)[Position]))) + geom_bar()
它与 Alex Brown 建议的类似,但更简短一些,并且不需要匿名函数定义。
更新
我认为我以前的解决方案当时很好,但现在我宁愿使用 forcats::fct_infreq
按频率对因子水平进行排序的解决方案:
require(forcats)
ggplot(theTable, aes(fct_infreq(Position))) + geom_bar()