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

ggplot2中geom_boxplot箱线图添加均值中位数图例不显示问题

问题原因

ggplot2仅会对aes()函数内部映射的图形属性(颜色、线型等)自动生成图例。你之前将color="red"、linetype="dashed"直接写在aes()外部,属于全局固定属性,不会触发生成图例,此前设置的scale_colour_manual没有对应的映射变量,因此无法生效。

调整后的代码

box %>% 
  pivot_longer(cols = c(Total, EX, MD, CI, EI)) %>% 
  ggplot(aes(x = name, y = value)) +
  geom_boxplot(fill="gray", aes(color = "median(中位数)", linetype = "median(中位数)")) +
  labs(x = "Burnout Dimension", y = "Likert Response Count") +
  stat_summary(fun = mean, geom = "errorbar", 
               aes(ymax = ..y.., ymin = ..y..,
                   color = "mean(均值)", linetype = "mean(均值)"),
               width = .75) +
  scale_colour_manual("统计量", 
                      values = c("median(中位数)" = "black", "mean(均值)" = "red")) +
  scale_linetype_manual("统计量", 
                        values = c("median(中位数)" = "solid", "mean(均值)" = "dashed")) +
  theme_minimal() +
  theme(text = element_text(family="Times New Roman",
                            color="#595959",
                            size=14),
        legend.position = "right",
        panel.grid.major.y = element_line(c(0,25,50,75,100),
                                          color="#D9D9D9",
                                          size=0.2),
        panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.background = element_blank())

关键修改说明

  • 将颜色、线型属性移入aes()内部,用自定义的分类标签作为映射值,触发图例自动生成
  • 两个scale_*_manual设置相同的图例名称("统计量"),会自动合并为同一个图例,每个标签对应的样式完全匹配你的需求
  • 修正了原有代码中panel.grid.major = element_blank()会误删y轴主网格的问题,改为仅删除x轴主网格,保留原有绘图样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:18:04