首页 > 解决方案 > 根据填充变量之一重新排序 geom_bar

问题描述

有数据

dat <- 
    structure(list(group = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), 
                                     .Label = c("alwaysFirst", "last"), 
                                     class = "factor"), 
                   rsk = structure(c(3L,1L, 2L, 4L, 3L, 1L, 2L, 4L), 
                                   .Label = c("beginning", "middle", "startsWithS", "zed"), 
                                   class = "factor"), 
                   prop = c(0.47, 0.38, 0.15, 0.54, 0.14, 0.78, 0.64, 0.36)), 
              class = "data.frame", 
              row.names = c(NA, -8L))

我可以对 ageom_bar()进行分组和重新排序

dat %>% 
  ggplot(aes(x = rsk %>% fct_reorder(-prop), y = prop, fill = group)) +
  geom_bar(stat = "identity", position = "dodge")

这将根据语句.fun = median中的默认值重新排序。fct_reorder()这很好,但是当我也在处理fillin 时aes(),我想强制fct_reorder使用其中一个值来重新排序情节。fill

换句话说,对于上面的数据,我希望绘图按 x 轴顺序排列:zed, startsWithS, beginning, middle, 降序排列基于propwhere 值的排序group == "alwaysFirst"。我可以用(如在这个问题中levels)的参数对值的重新排序进行硬编码,但如果可能的话,我宁愿让它这样做,特别是因为这可能会随着不同的组而改变。factor()ggplot

我如何强制仅根据参数中的一个组对值ggplot进行重新排序?xfill

标签: rggplot2

解决方案


推荐阅读