首页 > 解决方案 > 在 ggplot2 中,重新排序未按预期工作

问题描述

我有以下df:

prod <- c('apple', 'avocado', 'banana', 'papaya', 'pine')
year <- c(2016, 2017)
qty <- c(20, 5, 10, 1, 15, 30, 7, 15, 1, 20)

prod_yr <- data.frame('prod'= rep(prod, 2), 'yr'= c(rep(2016, 5), rep(2017, 5)), 'qty'= qty)

我想以条形图的形式查看结果,所以我使用了 ggplot 的geom_bar功能。现在,我想查看每年按降序排列的条形图。因此,我这样做:

ggplot(data = prod_yr, aes(x = reorder(yr, -qty),
                                y = qty, 
                                fill = prod)) +
  geom_bar(stat="identity", position=position_dodge())

这实际上是按 2017 - 2016 年的降序排列条形图,而prod按字母顺序排列。但我想查看按降序排列的条形图qty。因此,对于 2016/2017 年,棒材的预期产量按数量降序排列,苹果(20)、松树(15)、香蕉(10)、鳄梨(5)、木瓜(1)

标签: rggplot2

解决方案


您需要通过以下方式重新排序fill组件-qty

ggplot(data = prod_yr, 
       aes(x = factor(yr), y = qty, fill = reorder(prod, -qty))) +
  geom_bar(stat="identity", position = position_dodge()) +
  labs(x = "Year", y = "Quantity", fill = "Product")

在此处输入图像描述


推荐阅读