锋哥原创的Matplotlib3 Python数据可视化视频教程:
2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
课程介绍
本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。
绘制箱线图(Box)
箱线图(Box Plot)是一种用于展示数据分布特征的统计图表,能清晰显示数据的中位数、四分位数、异常值等关键统计量。它特别适合比较多个数据集分布情况。 箱线图组成要素:
箱体 (Box):
下边界:第一四分位数 (Q1, 25%)
上边界:第三四分位数 (Q3, 75%)
箱内横线:中位数 (Q2, 50%)
须 (Whiskers):
上限:Q3 + 1.5×IQR
下限:Q1 - 1.5×IQR
IQR = Q3 - Q1(四分位距)
异常值 (Outliers):
超出上下须范围的数据点
plt.boxplot()
是 Matplotlib 中用于绘制箱线图的核心函数,用于展示数据的分布特征(如中位数、四分位数、异常值等)。以下是详细解析:
plt.boxplot(
x, # 输入数据(数组或序列的序列)
notch=None, # 是否绘制缺口箱线图(显示中位数置信区间)
sym=None, # 异常值的标记符号
vert=None, # 是否垂直放置(True为垂直,False为水平)
whis=None, # 定义须的位置(默认1.5倍IQR)
positions=None, # 箱线图的位置
widths=None, # 箱体的宽度
patch_artist=None, # 是否填充箱体颜色
bootstrap=None, # 缺口箱线图的置信区间计算方法
usermedians=None, # 用户指定的中位数
conf_intervals=None, # 用户指定的置信区间
meanline=False, # 是否用线表示均值
showmeans=False, # 是否显示均值
showcaps=True, # 是否显示箱线图顶端的横线
showbox=True, # 是否显示箱体
showfliers=True, # 是否显示异常值
boxprops=None, # 箱体属性
whiskerprops=None, # 须的属性
capprops=None, # 顶端横线的属性
medianprops=None, # 中位线属性
meanprops=None, # 均值属性
flierprops=None, # 异常值属性
manage_ticks=True, # 是否自动管理刻度
autorange=False, # 是否自动调整范围
zorder=None # 绘图顺序
)
三、核心参数详解
数据输入 (
x
)
一维数组:单组数据
列表的列表/数组的数组:多组数据(每组数据绘制一个箱体)
字典:键为标签,值为数据
箱体样式控制
notch:是否绘制缺口箱线图(显示中位数置信区间)
patch_artist:True时可用
boxprops
填充颜色widths:箱体宽度(默认0.5)
异常值处理
showfliers:是否显示异常值
sym:异常值标记符号(默认'o')
whis:须的长度(默认1.5,可设为[5,95]表示百分位数)
统计量显示
showmeans:显示均值(默认False)
meanline:True时用横线表示均值,False时用点表示
样式属性
boxprops:箱体属性(如
dict(color='red', facecolor='blue')
)whiskerprops:须的属性(如
dict(linestyle='--', color='green')
)medianprops:中位线属性(如
dict(color='black', linewidth=2)
)flierprops:异常值属性(如
dict(marker='x', markersize=8)
)
我们来看一个示例:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
# 创建示例数据
np.random.seed(42)
data = [np.random.normal(0, std, 100) for std in range(1, 5)]
# 创建箱线图
plt.figure(figsize=(10, 6))
# 绘制箱线图
box = plt.boxplot(data,
vert=True, # 垂直方向
patch_artist=True, # 填充颜色
tick_labels=['组1', '组2', '组3', '组4'])
# 设置箱子颜色
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
for patch, color in zip(box['boxes'], colors):
patch.set_facecolor(color)
patch.set_alpha(0.7) # 设置透明度
# 设置须线和异常点样式
plt.setp(box['whiskers'], color='red', linestyle='-') # 箱线图的“须”部分,即从箱子延伸出去的两条线(上须和下须),表示数据的范围(通常是1.5倍IQR内的数据)。
plt.setp(box['caps'], color='yellow') # 箱线图须线末端的横线,称为“帽”。每个须有两个帽(上须的上帽和下须的下帽)。
plt.setp(box['fliers'], marker='o', markersize=8,
markerfacecolor='none', markeredgecolor='blue') # 箱线图中的异常值点,即超出1.5倍IQR范围的数据点。
plt.setp(box['medians'], color='gray', linewidth=2) # 箱线图中的中位数线,即箱子中间的横线。
# 添加标题和标签
plt.title('基本箱形图示例', fontsize=14)
plt.xlabel('数据组', fontsize=12)
plt.ylabel('值', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()