我正在尝试制作一个条形图,其中最大的条形最靠近 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 轴,然后是守门员栏,最后是前锋栏。谢谢
排序的关键是按照您想要的顺序设置因子的级别。有序因子不是必需的;有序因子中的额外信息不是必需的,如果这些数据用于任何统计模型,可能会导致错误的参数化——多项式对比不适用于此类名义数据。
## set the levels in order we want
theTable <- within(theTable,
Position <- factor(Position,
levels=names(sort(table(Position),
decreasing=TRUE))))
## plot
ggplot(theTable,aes(x=Position))+geom_bar(binwidth=1)
从最一般意义上讲,我们只需将因子级别设置为所需的顺序即可。如果未指定,则因子的级别将按字母顺序排序。您还可以在对因子的调用中指定级别顺序,如上所示,其他方式也是可行的。
theTable$Position <- factor(theTable$Position, levels = c(...))