为什么我的geom_bar上的条不能通过reorder()命令重新排序?

时间:2019-12-10 23:04:10

标签: r ggplot2 dplyr geom-bar

我的数据集包含有关大学毕业生的数据。每个观察都是一个专业,分为十二类。我正在尝试找到女性比例最高的专业类别。我关注的变量是major_category(字符)和sharewomen(每个专业中女性毕业生的百分比)。

我能够将数据显示在条形图上,但是该列的条形将无法正确地重新排序。 grads $ major_category是一个因素,我尝试过在dplyr管道之外的共享女性对因素进行重新排序,但该方法无效。我尝试了在aes()中进行fct_reorder和reorder的操作,并尝试删除了coord_flip()并在reorder命令中使用了-或desc()。下面是我现在拥有的代码及其产生的图形:

grads %>%
filter(major_category != "Interdisciplinary") %>%
select(major_category, total, sharewomen) %>%
group_by(major_category) %>%
ggplot(aes(x = reorder(major_category, -sharewomen), y = sharewomen), stat = "identity")+
geom_bar(stat = "identity")  + coord_flip()

bar chart with unordered bars

1 个答案:

答案 0 :(得分:1)

我使用数据尝试了您的代码:

grads <-
  tribble(
    ~major_category, ~sharewomen,
    "Business", 6.2,
    "Social Science", 5.1,
    "Biology", 8.05,
    "Education", 12,
    "Interdisciplinary", 1.2
  )

请按照您的描述出来: enter image description here

您所描述的变体(例如fct_reorder)和没有group_by的情况也相同。例如:

grads %>%
  filter(major_category != "Interdisciplinary") %>%
  select(major_category, sharewomen) %>%
  ggplot(aes(x = fct_reorder(major_category, -sharewomen), y = sharewomen))+
  geom_col() + 
  coord_flip()

也许tidyverse dplyr需要更新吗?