plt.boxplot()
—— 箱线图(Box Plot)
matplotlib.pyplot.boxplot()
用于可视化数据的分布情况,可以 显示中位数、四分位数、异常值,适用于 数据分析(EDA)和异常值检测。
1. 语法
import matplotlib.pyplot as plt
plt.boxplot(data, vert=True, patch_artist=False, widths=None, notch=False, showfliers=True, showmeans=False)
主要参数
参数 | 作用 |
---|---|
data | 需要绘制的 数值数据(列表/数组) |
vert | 是否 垂直(True )或 水平(False ) |
patch_artist | 是否填充颜色(True 填充) |
widths | 箱体宽度 |
notch | 是否显示 缺口(表示置信区间) |
showfliers | 是否 显示异常值(True 显示) |
showmeans | 是否 显示均值(True 显示) |
2. 什么是箱线图?
箱线图(Box Plot)展示 数据的分布情况,包含:
- 中位数(Median):箱子中间的横线。
- 第一四分位数(Q1, 25%):箱子的底部。
- 第三四分位数(Q3, 75%):箱子的顶部。
- 异常值(Outliers):超出
1.5 * IQR
的点(IQR = Q3 - Q1)。 - 上下须(Whiskers):非异常值的范围(通常是
1.5 * IQR
以内)。
3. 基本示例
3.1 画单个箱线图
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
data = np.random.randn(100) * 10 + 50 # 生成 100 个均值 50 的数据
# 绘制箱线图
plt.boxplot(data)
plt.title("Basic Boxplot")
plt.show()
📌 作用
- 显示数据的中位数、四分位数和异常值。
3.2 画多个数据的箱线图
data2 = [np.random.randn(100) * 10 + i for i in [50, 55, 60]] # 生成 3 组数据
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"])
plt.title("Multiple Boxplots")
plt.show()
📌 作用
labels
添加分组名称。
4. 进阶用法
4.1 横向箱线图(vert=False
)
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"], vert=False)
plt.title("Horizontal Boxplot")
plt.show()
📌 作用
vert=False
横向展示箱线图。
4.2 添加颜色(patch_artist=True
)
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"], patch_artist=True)
plt.title("Colored Boxplot")
plt.show()
📌 作用
patch_artist=True
填充颜色(可配合facecolor
自定义颜色)。
4.3 显示均值(showmeans=True
)
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"], showmeans=True)
plt.title("Boxplot with Mean")
plt.show()
📌 作用
showmeans=True
在箱线图中显示均值(用^
标记)。
4.4 隐藏异常值(showfliers=False
)
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"], showfliers=False)
plt.title("Boxplot without Outliers")
plt.show()
📌 作用
showfliers=False
隐藏异常值。
4.5 添加缺口(notch=True
)
plt.boxplot(data2, labels=["Group 1", "Group 2", "Group 3"], notch=True)
plt.title("Boxplot with Notch")
plt.show()
📌 作用
notch=True
显示缺口(表示中位数的置信区间)。
5. plt.boxplot()
vs sns.boxplot()
plt.boxplot() | sns.boxplot() | |
---|---|---|
风格 | 基础 | 美观 |
支持 hue 分类 | ❌ | ✅ |
适用于 | 数据分布分析 | 更美观的可视化 |
import seaborn as sns
sns.boxplot(data=data2)
plt.show()
📌 推荐
- 简单分析 →
plt.boxplot()
- 更美观 →
sns.boxplot()
6. 总结
✅ plt.boxplot()
适用于数据分布可视化,适用于异常值检测。
✅ 常见参数
showmeans=True
显示均值,showfliers=False
隐藏异常值。notch=True
显示缺口,patch_artist=True
填充颜色。