更改离散x比例的顺序 [英] Change the order of a discrete x scale
问题描述
我正在使用带有离散x尺度的ggplot制作一个闪烁的条形图,x轴现在按字母顺序排列,但我需要重新排列它,以便它按y轴的值排序(即,最高的酒吧将位于左侧)。
I am making a dodged bar chart using ggplot with discrete x scale, the x axis are now arranged in alphabetical order, but I need to rearrange it so that it is ordered by the value of the y-axis (i.e., the tallest bar will be positioned on the left).
我尝试了排序或排序,但结果是排序x轴,而不是分别排列。
I tried order or sort, but result in sort the x-axis, but not the bars respectively.
我做错了什么?
What have I done wrong?
推荐答案
尝试手动设置因子的级别在x轴上。例如:
Try manually setting the levels of the factor on the x-axis. For example:
library(ggplot2)
# Automatic levels
ggplot(mtcars, aes(factor(cyl))) + geom_bar()
# Manual levels
cyl_table <- table(mtcars$cyl)
cyl_levels <- names(cyl_table)[order(cyl_table)]
mtcars$cyl2 <- factor(mtcars$cyl, levels = cyl_levels)
# Just to be clear, the above line is no different than:
# mtcars$cyl2 <- factor(mtcars$cyl, levels = c("6","4","8"))
# You can manually set the levels in whatever order you please.
ggplot(mtcars, aes(cyl2)) + geom_bar()
正如James指出的那样在他的回答中, reorder
As James pointed out in his answer, reorder
is the idiomatic way of reordering factor levels.
mtcars$cyl3 <- with(mtcars, reorder(cyl, cyl, function(x) -length(x)))
ggplot(mtcars, aes(cyl3)) + geom_bar()
这篇关于更改离散x比例的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!