Python Matplotlib绘制振动图 箱型图 提琴图
人气:1Matplotlib介绍
Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂,深受广大技术爱好者喜爱。
NumPy 是 Python 科学计算的软件包,ndarray 则是 NumPy 提供的一种数组结构。
Matplotlib 由 John D. Hunter 在 2002 年开始编写, 2003 年 Matplotlib 发布了第一个版本,并加入了 BSD 开源软件组织。Matplotlib 1.4 是最后一个支持 Python 2 的版本,它的最新版本 3.1.1 已于 2019 年 7 月 1 日发布。
Matplotlib 提供了一个套面向绘图对象编程的 API 接口,能够很轻松地实现各种图像的绘制,并且它可以配合 Python GUI 工具(如 PyQt、Tkinter 等)在应用程序中嵌入图形。同时 Matplotlib 也支持以脚本的形式嵌入到 IPython shell、Jupyter 笔记本、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:振动示例图
箱型图
箱型图(也称为盒须图)于 1977 年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。
在箱型图中,我们从上四分位数到下四分位数绘制一个盒子,然后用一条垂直触须(形象地称为“盒须”)穿过盒子的中间。上垂线延伸至上边缘(最大值),下垂线延伸至下边缘(最小值)。箱型图结构如下所示:
图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:小提琴图绘制
加载全部内容