【Matplotlib】plt.boxplot() 函数:箱线图(Box Plot)、箱型图

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 填充颜色
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值