You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ggplot调用fct_reorder()无法重排堆叠条形图列顺序求助

你当前的排序逻辑仅基于各expert.level分组内的单组计数,没有按国家的总响应数全局排序,所以达不到降序效果。你可以先根据每个国家的总响应数重定义country列的因子顺序,修改后的代码如下:

survey_data_barchart %>%
    dplyr::filter(!is.na(expert.level)) %>% 
    dplyr::filter(!is.na(country)) %>% 
    dplyr::group_by(expert.level) %>% 
    dplyr::count(country) %>%
    # 取消原有分组,按国家总响应数降序重排country的因子水平
    dplyr::ungroup() %>% 
    dplyr::mutate(country = forcats::fct_reorder(country, n, .fun = sum, .desc = TRUE)) %>%
    ggplot(aes(x = country, y = n, fill = expert.level)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme(legend.position="top",
          axis.text.x = element_text(size = 20, vjust = 1.3),
          axis.text.y = element_text(size = 15),
          legend.title = element_blank(),
          axis.ticks = element_blank(),
          rect = element_blank(),
          legend.text = element_text(size=25),
          axis.title.x = element_text(size=20, vjust = 0.5)) +
    guides(fill = guide_legend("")) +
    labs(x = "",
         y = "Responses") +
    scale_fill_brewer(palette = "Set2")

如果你不想额外加载forcats包,也可以把mutate行替换为以下代码,效果完全一致:

dplyr::mutate(country = reorder(country, -n, FUN = sum))

原有expert.level的填充配色逻辑完全保留,不会影响颜色区分效果。

内容的提问来源于stack exchange,提问作者Schleifer Grigorij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:54:00