在ggplot2中,重新排序无法按预期工作

时间:2020-09-14 11:40:14

标签: r 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 )

1 个答案:

答案 0 :(得分:2)

您需要按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")

enter image description here