重新排序 barplot(ggplot2) 中的 x 轴,其中数据按 2 个变量分组

Reordering x axis in barplot(ggplot2) where data is grouped on 2 variables

在探索 R 中的 mpg 包时,我想绘制一个条形图,x 变量为 class,y 变量为 class 的频率值,然后用 cyl 堆叠这些条形图.

所以,我首先将数据集按 class 和 cyl 分组,然后为每组添加 freq。

class_count <-
mpg %>% 
group_by(class,cyl) %>%
summarize(freq = n())

class_count %>%
  ggplot(aes(reorder(class,freq), freq, fill = cyl)) +
  geom_bar(stat= "identity")

我希望数据按升序排列,但在最后的情节中超紧凑条出现在前面 如下图取货-

上面给出的代码的条形图

请帮我找到解决办法。

reorder 仅根据 freq 对条形进行排序,而不考虑 class。使用 fct_reorder

library(ggplot2)

ggplot(class_count, 
      aes(forcats::fct_reorder(class, freq, sum), freq, fill = cyl)) +
 geom_col() + xlab('class')