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
相关产品推荐
相关产品推荐

