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

如何用ggplot的stat_summary按颜色和线型分组绘制均值点连线图

解决ggplot均值连线图分组错误问题

问题根源

你的代码里stat_summary手动指定了group = Pre-Treatment,这会强制ggplot只按Pre-Treatment分组计算均值,完全忽略Treatment变量。所以同一Pre-Treatment下的不同Treatment数据会被合并汇总,画出错误的连线;而添加facet_grid(Treatment ~ .)后,每个分面里只有单一Treatment,分组逻辑又恢复正确,图表就正常了。

另外还有个语法问题:带连字符的变量名(比如Time-point、Pre-Treatment)需要用反引号``包裹,否则R会把连字符当成减号解析,可能引发报错。

修正后的代码

d.f %>%
  ggplot(mapping = aes(x = `Time-point`, y = Score, 
                       colour = `Pre-Treatment`, linetype = Treatment, shape = Treatment)) +
  # 原始数据点加透明度,避免遮挡均值线
  geom_point(alpha = 0.3) +
  # 按Pre-Treatment+Treatment的组合计算均值并连线
  stat_summary(
    fun = "mean",
    geom = "line",
    size = 1
  ) +
  # 额外添加均值点,突出显示统计结果
  stat_summary(
    fun = "mean",
    geom = "point",
    size = 3
  )

代码说明

  • 移除了stat_summary里手动设置的group和color参数:ggplot默认会根据所有离散美学变量(这里是colour和linetype)的组合自动分组,这样就能正确按Pre-Treatment+Treatment的组合计算均值,画出对应颜色、线型的连线。
  • 用反引号包裹带连字符的变量名,解决语法解析问题。
  • 给原始点加alpha = 0.3降低透明度,避免和均值点/线混淆;新增的均值点用更大的size突出显示,让图表层次更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:54:25