ggplot2:调整坐标轴范围后如何基于全量数据计算统计量并隐藏异常值?
解决方案
要实现基于全量数据计算统计量,同时仅可视化指定轴范围的数据,核心是避开scale_x_continuous(limits)(它会过滤超出范围的数据),改用coord_cartesian()设置可视范围,具体操作如下:
1. 验证全量数据均值
先确认mygroup='a'组的全量数据均值,确保后续图表的均值点符合预期:
# 计算a组全量数据的均值 mean(x$myvar[x$mygroup == 'a'])
2. 修改绘图代码
用coord_cartesian(xlim=c(0,5))替代scale_x_continuous(limits),完整代码如下:
library(ggplot2) ggplot(x, aes(x=myvar, y=mygroup)) + geom_boxplot() + stat_summary(fun=mean, geom='point', shape=20, color='red', fill='red') + coord_cartesian(xlim = c(0, 5)) # 仅调整图表可视范围,不过滤原始数据
关键说明
coord_cartesian()只是裁剪图表的显示区域,不会对原始数据做筛选,因此箱线图的中位数、四分位数,以及stat_summary计算的均值均基于全量数据得出。- 超出0-5范围的异常值会被自动裁剪,不会显示在图表中,但统计量计算不受影响,最终
mygroup='a'组的均值点会落在你期望的2.48附近。
内容的提问来源于stack exchange,提问作者Otto Kässi
相关产品推荐
相关产品推荐

