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

如何在ggplot2的facet_wrap各分面中为箱线图添加均值连线?

解决方法

1. 先正确计算分组均值

首先要基于原始数据results,按color和inst分组计算每个组的均值,确保均值数据包含facet所需的分组列:

# 先安装并加载dplyr包(未安装则执行install.packages("dplyr"))
library(dplyr)

mean_data <- results %>%
  group_by(color, inst) %>%
  summarise(average = mean(value, na.rm = TRUE), .groups = "drop")

2. 修改ggplot代码添加均值连线

取消原代码中geom_line的注释,同时调整映射逻辑,关键是在每个facet内指定group=1,让同组内所有inst的均值点连成线:

ggplot(data = results, aes(x = inst, y = value, group = inst)) +
  geom_boxplot() +
  # 添加均值连线,指定均值数据集和正确映射
  geom_line(data = mean_data, aes(x = inst, y = average, group = 1), 
            color = "darkred", linewidth = 1) + # 可选:自定义线的颜色和粗细
  facet_wrap(~color) +
  theme_bw()

关键说明

  • 均值数据mean_data必须包含color列,这样facet_wrap(~color)才能将均值线匹配到对应子图
  • group=1是核心:每个facet已经按color分组,子图内部需要强制ggplot将所有inst的均值点视为同一组,才能连成一条线
  • 如果inst是分类变量,确保它在原始数据和均值数据中的顺序一致,避免连线错乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:16:02