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

如何拆分geom_col中的堆叠条形并重新排序分箱?

按企业规模&年份展示就业情况的独立条形图解决方案

需求:制作不同年份按企业规模划分的就业占比条形图,要求各年份的条形相互独立并排,而非堆叠。当前用fill区分年份时,企业规模的分箱顺序混乱,且条形是堆叠状态,不符合需求。

当前使用代码

firm_size %>% 
  ggplot(aes(`firm size`, total, fill = year)) +
  geom_col() +
  theme_minimal() +
  labs(title = "Firm Size Distribution",
       subtitle = "2021",
       x = "Number of Employees at Firm",
       y = "% of Total Santa Barbara Employment")

数据结构说明

数据包含三列:

  • year:年份(如2021、2022)
  • firm size:企业规模分箱(字符型,如"1-4"、"5-9"、"10-19"等)
  • total:对应类别下的就业占比

当前输出问题

  1. 企业规模分箱顺序混乱(字符默认排序导致顺序不符合业务逻辑)
  2. 不同年份的条形堆叠在一起,未实现独立并排展示

修正后的代码及说明

# 调整企业规模分箱的顺序,转为有序因子
firm_size$`firm size` <- factor(firm_size$`firm size`,
                                levels = c("1-4", "5-9", "10-19", "20-49", "50-99", "100-249", "250+"),
                                ordered = TRUE)

# 绘制独立并排的条形图
firm_size %>% 
  ggplot(aes(`firm size`, total, fill = factor(year))) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) + # 设置dodge让条形并排,调整宽度提升美观度
  theme_minimal() +
  labs(title = "企业规模就业分布",
       subtitle = "2021-2022", # 改为对应年份范围
       x = "企业员工数量",
       y = "圣巴巴拉总就业占比(%)",
       fill = "年份") + # 给图例添加明确标题
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 可选:旋转x轴标签避免文字重叠

关键修正点

  • 修正分箱顺序:将firm size转为因子并指定自定义levels,强制按实际业务逻辑排序
  • 实现独立条形:在geom_col中添加position = position_dodge(),让不同年份的条形并排展示
  • 优化细节:更新标题、副标题为中文适配,可选旋转x轴标签避免文字重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:45:56