如何在 R 中使用 ggplot2(百分比、排序)更改堆积条形图

how to change the stacked bar chart using ggplot2 (percentage, sort) in R

我是 R 和 ggplot2 的新手。我有一个数据集,我想用堆积条形图可视化,其中

示例..

total_bill tip sex smoker day time size
16.99 1.01 Female No Sun Dinner 2
10.34 1.66 Male No Sun Dinner 3
    data(tips, package='reshape2')
    
    ggplot(tips, aes(x=sex)) +
    geom_bar(aes(fill=day), width = 0.5, position = 'fill')+
    theme(axis.text.x = element_text(angle=65, vjust=0.6))

从这里开始,我想对图表进行以下更改。

  1. 从图表中去掉'Fri',但其他天的百分比应该保持不变。这意味着 'Sat, Sun, Thur' 的百分比不会重新映射到 100%
  2. 按照'Sat'百分比的降序对'sex'进行排序。这意味着,如果 'Male' 中 'Sat' 的百分比高于 'Female' 中的百分比,则 'Male' 应该位于左侧。
library(tidyverse)

data(tips, package='reshape2')

tips %>% 
  #Calculating percentage by sex outside ggplot2
  count(sex,day) %>% 
  group_by(sex) %>% 
  mutate(p = 100*n/sum(n)) %>% 
  ungroup() %>%
  #Removing Friday 
  filter(day != "Fri") %>% 
  #Ordering sex by Saturday percentage
  mutate(
    sex = fct_reorder2(
    .f = sex,
    .x = p,
    .y = day,
    .fun = function(x,y) max(x[y == "Sat"])
      )
    ) %>% 
  ggplot(aes(x = sex, y = p)) +
  geom_col(aes(fill=day))