在箱线图中显示平均值而不是中位数

机器算法验证 数据可视化 Python matplotlib 箱形图
2022-01-29 06:46:00

使用 python matplotblib 绘制箱线图时,图中间的线是分布的中位数。

是否有可能将这条线改为平均线。或者以不同的风格将其绘制在它旁边。

另外,因为这条线通常是中线,如果我把它设为平均值,真的会让我的读者感到困惑吗(当然我会添加一个注释中间线是什么)?

2个回答

此代码制作箱线图,然后放置一个圆圈,标记每个框的平均值。您可以通过在调用中指定标记参数来使用不同的符号scatter

import numpy as np
import pylab

# 3 boxes
data = [[np.random.rand(100)] for i in range(3)]
pylab.boxplot(data)

# mark the mean    
means = [np.mean(x) for x in data]
pylab.scatter([1, 2, 3], means)

替代文字

回答您的第二个问题:是的,我认为将线放在平均值而不是中位数会令人困惑。控制“胡须”(如果有的话)长度和异常值处理的精确规则各不相同,但每个人都坚持 Tukey 使用框来显示中位数和上下四分位数。对于高度偏斜的分布,平均值可能在盒子之外,这看起来很奇怪。常见用法是中位数与四分位数范围有关,而平均值与标准差(如果您对推理而不是数据描述感兴趣,则为平均值的标准误差)。如果您想直观地显示平均值,我会使用不同的符号来显示它以避免混淆。