在 Python 中绘制箱形图(Box Plot,也称箱线图或盒须图)通常使用 matplotlib 或 seaborn 库,以下是详细步骤和代码示例:

方法1:使用 matplotlib 绘制箱形图
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
data = np.random.normal(0, 1, 100) # 100个正态分布随机数
# 绘制箱形图
plt.boxplot(data)"箱形图示例")
plt.ylabel("数值")
plt.grid(True)
plt.show()
关键参数说明
vert=False:水平显示箱形图patch_artist=True:允许自定义箱体颜色showfliers=False:隐藏异常值(离群点)
方法2:使用 seaborn 绘制更美观的箱形图
import seaborn as sns import numpy as np # 生成示例数据 data = np.random.normal(0, 1, 100) # 绘制箱形图 sns.boxplot(data=data)"Seaborn 箱形图示例") plt.show()
分组箱形图示例
import seaborn as sns
import pandas as pd
# 创建示例数据
data = pd.DataFrame({
"组别": ["A"] * 50 + ["B"] * 50,
"数值": np.concatenate([np.random.normal(0, 1, 50), np.random.normal(2, 1, 50)])
})
# 按组别绘制箱形图
sns.boxplot(x="组别", y="数值", data=data)"分组箱形图")
plt.show()
箱形图各部分含义
- 箱体(Box):表示数据的四分位距(IQR),即第25百分位数(Q1)到第75百分位数(Q3)。
- 中位数线(Median):箱体中间的横线,代表数据的中位数(Q2)。
- 须线(Whiskers):通常延伸到 Q1 - 1.5×IQR 和 Q3 + 1.5×IQR 的范围。
- 异常值(Outliers):超出须线的点,用圆点或星号标记。
自定义样式示例
plt.figure(figsize=(8, 6))
box = plt.boxplot(data, patch_artist=True,
boxprops=dict(facecolor="lightblue"),
medianprops=dict(color="red", linewidth=2),
whiskerprops=dict(color="green", linewidth=1.5))"自定义样式箱形图")
plt.show()
常见问题
- 数据格式:确保输入数据是列表、NumPy数组或Pandas的Series/DataFrame。
- 异常值处理:若需隐藏异常值,添加参数
showfliers=False。 - 多组数据:直接传入二维数组或使用Pandas DataFrame的列分组。
通过以上方法,你可以灵活绘制和自定义箱形图,适合用于数据分布分析和异常值检测。

