MCM520 ← 资料站首页 图表选择可视化指南:箱线图:看分布与离群(深度版) 打开交互阅读器 →

图表选择可视化指南:箱线图:看分布与离群(深度版)

展示数据的中位数、四分位、 whisker 与离群点,适合多组分布对比与稳健性展示。

分类:📊 统计图 适用:多算法结果分布对比、灵敏度实验分布、数据分布探查

一、这个图适合谁(适用场景)

  • 多算法结果分布对比
  • 灵敏度实验分布
  • 数据分布探查

二、图表结构要素

  1. 箱体=四分位距
  2. 中线=中位数
  3. 须=1.5IQR
  4. 点=离群

三、可视化的底层逻辑

箱线图把一整组分布压缩成"五数概括"(最小、Q1、中位、Q3、最大+离群),用"位置+长度"两个高精度通道高效传达中心、离散与异常。它比"均值±标准差"更稳健:均值和标准差都被极端值拉动,而中位数和四分位的崩溃点(breakdown point)高达 0.5——哪怕一半数据被污染,中位数依然可靠。在建模多算法对比/灵敏度实验中,箱线图能立刻暴露"哪个算法不仅均值高、而且方差小更稳",这是评委极看重的"稳健性"证据。核心思想:用分位数刻画分布形状,而非只报一个点;小样本时分位数不稳定,应慎用。

四、视觉编码与感知推导

五数概括与须:下四分位 Q1Q_1、中位 Q2Q_2、上四分位 Q3Q_3,四分位距 IQR=Q3−Q1\text{IQR}=Q_3-Q_1。须端点

[max⁡(Q1−1.5 IQR, min⁡), min⁡(Q3+1.5 IQR, max⁡)] [\max(Q_1-1.5\,\text{IQR},\ \min),\ \min(Q_3+1.5\,\text{IQR},\ \max)]

超出须的观测判为离群点,单独绘出——这正是"离群可视"的机制。

稳健性对比:中位数崩溃点 0.50.5(最多一半数据异常仍稳健),均值崩溃点趋近 00(一个无穷离群即破坏)。故多算法对比用中位数+箱而非均值,更能反映"典型表现"。

组间差异直觉:并排箱线中,组间中位差 Δmed=Q2(a)−Q2(b)\Delta_{\text{med}}=Q_2^{(a)}-Q_2^{(b)} 与 IQR 重叠度决定观感显著性:若两箱 IQR 区间重叠大,说明分布差异不显,需统计检验(如 Mann-Whitney)佐证,不能仅凭中位差下结论。

样本量约束:分位数估计的标准误随 nn 增大而减小;小 nn(如 <10<10)时 Q1,Q3Q_1,Q_3 极不稳定,箱子形状不可信,应改用点图/散点。

五、怎么画(步骤)

  1. 多组对比并排画,直观看中心与离散。
  2. 结合散点/小提琴图看真实形状。
  3. 离群点单独标出并解释来源。
  4. 样本量太小箱线意义弱,谨慎用。
  5. 配均值线辅助。

六、何时用 / 何时不用 / 常见丑图

  • 何时用:『分布长啥样、稳不稳、有无离群』。
  • 何时不用:只要单点均值 → 柱状+误差棒。
  • 常见丑图:样本太小硬画、不标离群。

七、常见坑

  • 小样本箱线无意义
  • 忽略离群解释
  • 与均值混淆

八、画图自检清单

  • 多组并排对比
  • 离群已解释
  • 样本量足够
  • 配均值/散点辅助

九、配套资源与搭配

  • 敏感性分析与误差分析
  • Python 数据可视化模板
  • 分类与聚类怎么选

本指南由 MCM520 资料站自动生成(深度版),配套论文图表规范与可视化模板可在资源页下载。

十、实战案例——Python 绘制 + 图效果

箱线图用最小值、Q1、中位数、Q3、最大值五个统计量,瞬间展示数据分布的全貌。

案例场景:比较四种评价方法(传统法、AHP、熵权、TOPSIS)在 100 次模拟中的得分分布。
从箱线图可以看:中位数高低、数据是否集中、有无离群点。

完整代码(Python + matplotlib)

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(2026)
data = [
    np.random.normal(75, 10, 100),   # 传统法
    np.random.normal(80, 8, 100),    # AHP法
    np.random.normal(83, 7, 100),    # 熵权法
    np.random.normal(85, 6, 100),    # TOPSIS
]
labels = ['传统法', 'AHP法', '熵权法', 'TOPSIS']

plt.figure(figsize=(8, 4))
bp = plt.boxplot(data, labels=labels, patch_artist=True, widths=0.5)
colors = ['#f59e0b', '#2563eb', '#16a34a', '#7c3aed']
for patch, c in zip(bp['boxes'], colors):
    patch.set_facecolor(c)
    patch.set_alpha(0.35)
plt.ylabel('综合得分', fontsize=12)
plt.title('四种方法得分分布箱线图', fontsize=14, fontweight='bold')
plt.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.show()

运行效果图

图X4  四种方法得分分布箱线图


本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。