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

ggplot如何在分面中显示不同截断值且无需中间汇总数据框?

分面内显示子集均值竖线的解决方案

原代码里geom_vline(aes(xintercept = mean(wt)))算的是wt列的全局均值,导致所有分面都显示同一条竖线。要实现每个分面展示对应子集的wt均值,不用提前生成汇总数据框,直接用stat_summary替代geom_vline就行——它会自动按分面的分组维度计算统计量。

修改后的代码如下:

ggplot(mtcars, aes(x = wt, y = qsec)) +
  geom_point() +
  ggh4x::facet_grid2(gear ~ vs, scales = "free", axes = "x", independent = "all") +
  stat_summary(
    geom = "vline",
    aes(xintercept = after_stat(x)),
    fun = mean,
    color = "red" # 可选,方便区分均值竖线
  )

关键说明

  • stat_summary的fun = mean参数会针对每个分面内的wt子集单独计算均值
  • after_stat(x)用来引用计算后的均值结果,作为竖线的x轴截断值
  • 全程不需要提前创建中间汇总数据框,所有计算都在ggplot的图层逻辑内完成

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:10:40