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

如何在ggplot柱状图图例中设置1975年前后出生群体分类

解决ggplot2图例合并分组的问题

修改后的完整代码

library(ggplot2)
library(dplyr)

# 先处理数据,新增出生分组变量
filtered_data <- agecohort_sum %>%
  filter(year == 2009 & !(age_cohort %in% c("0-5", "6-10", "66+"))) %>%
  mutate(
    birth_cohort = case_when(
      age_cohort %in% c("11-15", "16-20", "21-25", "26-30", "31-35") ~ "1975年后出生",
      age_cohort %in% c("36-40", "41-45", "46-50", "51-55", "56-60", "61-65") ~ "1975年前出生"
    )
  )

# 定义颜色映射,直接对应新分组
cohort_colors09 <- c("1975年后出生" = "#FF7256", "1975年前出生" = "#EE3B3B")

ggplot(filtered_data, aes(x = as.factor(age_cohort), y = flfp, fill = birth_cohort)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.7) + 
  labs(x = "Age cohort",
       y = "FLFP rate in 2009") +
  theme_minimal() +
  theme(axis.line = element_line(color='black'),
        plot.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        legend.title=element_blank()) +
  scale_fill_manual(values = cohort_colors09)

关键改动说明

  • 新增统一分组变量:通过mutate和case_when将原有的单个年龄组映射到“1975年后出生”“1975年前出生”两个统一分组,让fill参数绑定这个新分组变量,这是合并图例的核心逻辑。
  • 简化颜色映射规则:颜色向量直接对应新的分组标签,无需给每个年龄组单独赋值,代码逻辑更简洁清晰。
  • 分离数据处理环节:先完成数据过滤和分组转换,再传入ggplot绘图,代码结构更易读维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:02:33