欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python调用Matplotlib绘制振动图、箱型图和提琴图

程序员文章站 2022-06-15 10:29:02
目录matplotlib介绍振动图箱型图提琴图matplotlib介绍matplotlib 是一款用于数据可视化的 python 软件包,支持跨平台运行,它能够根据 numpy  ndarray 数组...

matplotlib介绍

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()

上述代码执行后,输出结果如下:

Python调用Matplotlib绘制振动图、箱型图和提琴图

图1:振动示例图

箱型图

箱型图(也称为盒须图)于 1977 年由美国著名统计学家约翰·图基(john tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。

在箱型图中,我们从上四分位数到下四分位数绘制一个盒子,然后用一条垂直触须(形象地称为“盒须”)穿过盒子的中间。上垂线延伸至上边缘(最大值),下垂线延伸至下边缘(最小值)。箱型图结构如下所示:

Python调用Matplotlib绘制振动图、箱型图和提琴图

图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()

上述代码执行后,输出结果如下:

Python调用Matplotlib绘制振动图、箱型图和提琴图

图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()

输出结果如下:

Python调用Matplotlib绘制振动图、箱型图和提琴图

图1:小提琴图绘制

以上就是python调用matplotlib绘制振动图、箱型图和提琴图的详细内容,更多关于python matplotlib绘制振动图 箱型图 提琴图的资料请关注其它相关文章!