Python Matplotlib绘制振动图、箱型图与小提琴图详解
本文详细介绍如何使用Python的Matplotlib库绘制三种常用数据可视化图表:振动图(Quiver Plot)、箱型图(Boxplot)和小提琴图(Violin Plot)。文章涵盖函数参数说明、代码示例及结果分析,帮助开发者掌握向量场、数据分布及概率密度的可视化技巧。
Matplotlib介绍
Matplotlib是Python中一款广泛使用的数据可视化库,具备跨平台兼容性。它基于NumPy的ndarray数组结构生成2D图形,因其操作简便、代码逻辑清晰而受到技术人员的青睐。
NumPy作为Python科学计算的基础包,提供了ndarray这一核心数组数据结构,为Matplotlib的绘图功能提供了底层数据支持。
该库由John D. Hunter于2002年启动开发,2003年发布首个版本并加入BSD开源组织。值得注意的是,Matplotlib 1.4是最后一个支持Python 2的版本,而截至2019年7月1日发布的最新稳定版为3.1.1。
Matplotlib提供了一套面向绘图对象的API接口,使得各类图像绘制变得简单直观。此外,它还能与PyQt、Tkinter等Python GUI工具结合,将图形嵌入应用程序中,或嵌入IPython shell、Jupyter Notebook及Web服务器脚本中使用。
振动图
振动图(亦称磁场图或量场图)通过一组矢量箭头来展示数据,其数学意义在于表示在坐标点(x,y)处的向量分量(u,v)。
Matplotlib提供了专门绘制此类量场图的函数,具体调用方式如下:
quiver(x,y,u,v)
该函数用于在指定的(x,y)坐标位置绘制向量箭头。各参数含义如下:
| 参数 | 说明 |
|---|---|
| x | 一维、二维数组或者序列,表示箭头位置的x坐标。 |
| y | 一维、二维数组或者序列,表示箭头位置的y坐标。 |
| u | 一维、二维数组或者序列,表示箭头向量的x分量。 |
| v | 一维、二维数组或者序列,表示箭头向量的y分量。 |
| c | 一维、二维数组或者序列,表示箭头颜色。 |
以下代码展示了一个简单的振动图绘制示例:
import matplotlib.pyplot as plt
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, 0.2), np.arange(-2, 2, 0.25))
z = x*np.exp(-x**2 - y**2)
#计算数组中元素的梯度
v, u = np.gradient(z, 0.2, 0.2)
fig, ax = plt.subplots()
q = ax.quiver(x,y,u,v)
plt.show()
运行上述代码后,生成的图形结果如下所示:

图1:振动示例图
箱型图
箱型图(又称盒须图)由美国统计学家John Tukey于1977年提出。该图表能够直观展示数据的最小值、最大值、中位数以及上下四分位数。
在箱型图中,盒子部分由上四分位数延伸至下四分位数绘制,中间穿过一条垂直线(即“盒须”)。上垂线延伸至最大值(上边缘),下垂线延伸至最小值(下边缘)。箱型图的具体结构如下图所示:

图1:箱型如结构图
首先,我们需要准备用于绘制箱型图的数据。可以使用numpy.random.normal()函数生成基于正态分布的随机数据,该函数接收三个参数:均值、标准差以及样本数量。具体代码如下:
#利用随机数种子使每次生成的随机数相同
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)
data_to_plot=[collectn_1,collectn_2,collectn_3,collectn_4]
接着,通过data_to_plot变量指定绘图所需的数据序列,并调用boxplot()函数完成箱型图的绘制,代码示例如下:
fig = plt.figure()
#创建绘图区域
ax = fig.add_axes([0,0,1,1])
#创建箱型图
bp = ax.boxplot(data_to_plot)
plt.show()
执行上述代码后,输出的箱型图结果如下:

图2:箱型图输出结果
小提琴图
小提琴图(Violin Plot)旨在展示数据的分布状态及概率密度,它结合了箱形图和密度图的特点。与箱形图类似,但小提琴图额外显示了数据在不同数值下的概率密度分布。
该图表利用核密度估计(KDE)来计算样本分布,图中包含中位数、四分位间距及置信区间等要素。当数据量巨大且难以逐一展示时,小提琴图尤为适用。
概率密度估计、置信区间和四分位间距均为统计学概念,此处不再赘述,读者可自行查阅相关资料。
相比箱形图,小提琴图提供了更丰富的信息。虽然箱形图仅显示均值、中位数和四分位数,但小提琴图展示了数据的完整分布情况,更利于数据的深入分析与对比。以下是小提琴图的绘制示例:
import matplotlib.pyplot as plt
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)
#创建绘制小提琴图的数据序列
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]
#创建一个画布
fig = plt.figure()
#创建一个绘图区域
ax = fig.add_axes([0,0,1,1])
# 创建一个小提琴图
bp = ax.violinplot(data_to_plot)
plt.show()
运行代码后的输出结果如下:

图1:小提琴图绘制
以上就是Python调用Matplotlib绘制振动图、箱型图和提琴图的详细内容,更多关于Python Matplotlib绘制振动图 箱型图 提琴图的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













