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

如何将ggplot2中stat_summary生成的均值线条添加至图例?

解决stat_summary均值线条添加图例的问题

要让stat_summary()生成的均值线条出现在图例中,同时保留原有国家的图例,核心是把均值线的颜色映射到aes()内部,而非直接设置col参数。以下是修改后的完整代码:

library(ggplot2)
library(dplyr)

# 获取与ggplot默认配色一致的10个国家颜色
country_colors <- scales::hue_pal()(10)
names(country_colors) <- c("Angola","Botswana","Lesotho","Malawi","Mozambique",
                           "Namibia","Swaziland","South Africa","Zambia","Zimbabwe")

gap %>%
  filter(country %in% names(country_colors)) %>%
  ggplot(aes(x=year,y=life_expectancy, col=country)) + 
  geom_line(size=1.2, alpha=0.7)+
  # 将均值线的颜色映射为分类项"Mean",触发图例生成
  stat_summary(fun = mean, geom = "line", size= 1.5, aes(col="Mean"))+
  theme_light()+
  # 手动指定所有分类的颜色:保留国家默认色,给均值线设黑色
  scale_color_manual(values = c(country_colors, "Mean" = "black"))+
  labs(title="Evolució de l'expectativa de vida en l’Àfrica Austral",
       x= "1960-2016",
       y="Expectativa de vida",
       col= "Llegenda",
       tag = "Fig. 3")

关键修改说明:

  • 将颜色放入aes():aes(col="Mean")让ggplot把均值线识别为一个新的分类变量,自动为其生成图例条目。
  • 手动统一配色:用scale_color_manual()整合原有国家的默认配色和均值线的黑色,确保所有图例项的颜色与对应线条完全匹配。
  • 保留默认国家色:通过scales::hue_pal()生成和ggplot原生一致的国家线条颜色,避免修改后破坏原有视觉效果。

修改后图例会同时显示所有国家和"Mean"(均值)的条目,两者均正常展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:55:17