R ggplot2-基于y数字对aes填充进行重新排序,但计算因子x的每个实例。这可能吗?

R ggplot2-基于y数字对aes填充进行重新排序,但计算因子x的每个实例。这可能吗?,r,ggplot2,R,Ggplot2,我到处都找遍了,但似乎找不到创建此情节的混乱/黑客攻击方式 我想用以下内容绘制柱状图: x=分类因子,按y降序排序 y=数值变量,求和 fill=分类因子,按y降序排序-但对x的每次出现分别进行计算 例如,下面的代码(使用数据集中的数据)几乎可以按照我的意愿对所有内容进行排序,但我一生都不知道如何告诉ggplot对每个x的填充进行重新排序 库(tidyverse) UCBAD任务来自: position_fill()和position_stack()自动将值堆叠在 群体审美的逆向秩序 所以我们可

我到处都找遍了,但似乎找不到创建此情节的混乱/黑客攻击方式

我想用以下内容绘制柱状图:

x=分类因子,按y降序排序

y=数值变量,求和

fill=分类因子,按y降序排序-但对x的每次出现分别进行计算

例如,下面的代码(使用数据集中的数据)几乎可以按照我的意愿对所有内容进行排序,但我一生都不知道如何告诉ggplot对每个x的填充进行重新排序

库(tidyverse)
UCBAD任务来自:

position_fill()和position_stack()自动将值堆叠在 群体审美的逆向秩序

所以我们可以通过将映射组添加到频率来获得您想要的。因为数据包括两个录取类别,所以我在这里做了一些预处理来合并它们

现在,对于每个部门,堆叠顺序取决于哪个性别的数字更高

plot <- UCBAdmissions %>% 
  count(Dept, Gender, wt = Freq) %>%   # outputs n = total Freq per Dept/Gender
  ggplot(aes(
    x = fct_reorder(Dept, n, .fun = sum),
    y = n,
    group = n,
    fill = fct_reorder(Gender, n, .fun = sum)
  )) +
  geom_col() + coord_flip() + labs(fill = "gender")

plot
绘图%
计数(部门,性别,工作时间=频率)%>%#输出n=每个部门/性别的总频率
ggplot(aes)(
x=fct\U再订购(部门,n,.fun=sum),
y=n,
组=n,
填充=fct\U重新排序(性别,n,.fun=总和)
)) +
geom_col()+coord_flip()+实验室(fill=“性别”)
情节

来自:

position_fill()和position_stack()自动将值堆叠在 群体审美的逆向秩序

所以我们可以通过将映射组添加到频率来获得您想要的。因为数据包括两个录取类别,所以我在这里做了一些预处理来合并它们

现在,对于每个部门,堆叠顺序取决于哪个性别的数字更高

plot <- UCBAdmissions %>% 
  count(Dept, Gender, wt = Freq) %>%   # outputs n = total Freq per Dept/Gender
  ggplot(aes(
    x = fct_reorder(Dept, n, .fun = sum),
    y = n,
    group = n,
    fill = fct_reorder(Gender, n, .fun = sum)
  )) +
  geom_col() + coord_flip() + labs(fill = "gender")

plot
绘图%
计数(部门,性别,工作时间=频率)%>%#输出n=每个部门/性别的总频率
ggplot(aes)(
x=fct\U再订购(部门,n,.fun=sum),
y=n,
组=n,
填充=fct\U重新排序(性别,n,.fun=总和)
)) +
geom_col()+coord_flip()+实验室(fill=“性别”)
情节