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

基于指定分组值对ggplot2堆叠条形图进行降序重排

实现方法

ggplot的离散坐标轴显示顺序由对应列的因子水平顺序决定,要实现按value为"Einen großen Beitrag"时的n值对条形整体降序排列,只需要在绘图前重排name列的因子水平即可,不需要修改原有绘图的核心参数。

完整代码

library(tidyverse)

# 数据预处理:重排name的因子顺序
F14a <- F14a %>%
  ungroup() %>% # 先清除数据集自带的分组属性,避免计算异常
  group_by(name) %>%
  # 提取每个条形对应"Einen großen Beitrag"的n值作为排序依据,缺失值填0
  mutate(sort_ref = replace_na(n[value == "Einen großen Beitrag"], 0)) %>%
  ungroup() %>%
  # 按参考值降序设置name的因子水平
  mutate(name = fct_reorder(name, sort_ref, .desc = TRUE))

# 原有绘图代码完全不需要改动,直接运行即可
ggplot(F14a, 
       aes(x = name, y = n, fill = value))+
  geom_col()+
  scale_color_viridis_d(aesthetics = "fill", alpha = 0.8)+
  coord_flip()+
  theme_bw()+
  theme(legend.position = "bottom",
        legend.title = element_text(size=7),
        legend.text=element_text(size=7),
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank()
  )

注意事项

  • 上述代码不会改动你已经调整好的条形内部堆叠顺序,仅调整不同条形之间的整体排序。
  • 如果存在某个条形完全没有"Einen großen Beitrag"类别的情况,代码会自动将这类条形排在最后,如果需要调整这类条形的位置,修改replace_na里的填充值即可。
  • 如果后续需要更换排序依据的类别,只需要修改value == "Einen großen Beitrag"中的类别文本即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:09:36