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

如何在ggplot中添加stat_summary计算不按Athlete分组的均值线

解决ggplot2中stat_summary按整体Moment计算均值的问题

问题核心是你在全局aes()中设置了group = Athlete,导致stat_summary()继承了这个分组逻辑,最终按每个运动员计算均值而非整体按Moment聚合。

解决方案

在stat_summary()中显式覆盖group参数,设置为group = 1,强制让该图层忽略原有的运动员分组,基于整个数据集按Moment计算均值:

ggplot(GroupedZScoreFatigue, aes(x = factor(Moment, levels = c("MD-4", "MD-3", "MD-2", "MD-1", "MD", "MD+1", "MD+2")), 
                                 y = Mean, 
                                 group = Athlete)) +
  geom_line(size= 0.2) +
  geom_point(size = 2) +
  # 添加整体均值折线,覆盖group参数
  stat_summary(fun = mean, colour="blue", geom="line", size= 0.2, group = 1) +
  ylab("Fatigue (x̄±σ)") +
  xlab("Moment") +
  ggtitle("Individual Z-Score Variations - Fatigue") +
  theme_classic(base_size = 12) +
  theme(legend.position = "None", plot.title = element_text(hjust = 0.5)) +
  ylim(-2,4)

原理说明

ggplot2的图层会默认继承全局aes()中的所有参数,包括group。当你在全局设置group = Athlete后,stat_summary()会自动按运动员分组计算均值。通过在stat_summary()中单独设置group = 1,可以让该图层使用一个统一的分组(即整个数据集),从而计算每个Moment对应的整体均值。

内容的提问来源于stack exchange,提问作者Sérgio M. Querido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:52:44