【问题标题】:Reordering a percent stacked bar chart by gender and values按性别和值重新排序百分比堆积条形图
【发布时间】:2020-05-28 10:35:00
【问题描述】:

我正在尝试按性别重新排列我的价值观,从最高的女性到最低的女性。

这个数据集的第一个值是:

sex,values,citizen_full
F,543,Aghanistan 
M,376,Afghanistan
F,131,Albania
M,141,Albania
F,134,Argentina
M,107,Argentina
F,325,Austria
M,231,Austria
ggplot(dataframe, aes(x = factor(citizen_full), y = values, fill = sex)) +
  geom_bar(position = 'fill', stat = 'identity') +
  theme_minimal()

【问题讨论】:

    标签: r ggplot2 dplyr tidyverse


    【解决方案1】:

    你可以使用fct_reorder函数:

    df <- tibble::tribble(
      ~sex, ~values, ~citizen_full,
       "F",    543L,  "Aghanistan",
       "M",    376L, "Afghanistan",
       "F",    131L,     "Albania",
       "M",    141L,     "Albania",
       "F",    134L,   "Argentina",
       "M",    107L,   "Argentina",
       "F",    325L,     "Austria",
       "M",    231L,     "Austria"
      )
    
    library(dplyr)
    library(ggplot2)
    library(forcats)
    df %>% 
      group_by(citizen_full, sex) %>% 
      mutate(sum_sex_grouped = sum(values)) %>% 
      group_by(citizen_full) %>% 
      mutate(sum_citizien = sum(values),
             sex_percent = sum_sex_grouped/sum_citizien,
             percent_women = if_else(sex == "F", sex_percent, 0)) %>% 
    ggplot(aes(x = fct_reorder(citizen_full, desc(percent_women)), y = values, fill = sex)) +
      geom_bar(position = 'fill', stat = 'identity') +
      theme_minimal()
    

    【讨论】:

    • 还需要包含“library(forcats)”
    • 这就像一个魅力,谢谢兄弟。 @Daniel,forcats 库在 tidyverse 包中也是标准的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多