当前有效matplotlib版本为:3.4.1。
概述
violinplot()函数的作用是绘制小提琴图。
小提琴图和箱形图有点类似,它也可以显示四分位数(quartile)。不同于箱形图是通过长方形呈现的,以及绘图组件都对应实际的数据点,小提琴图集合了箱形图和密度图的特征,主要用来显示数据的分布状态,它能很好地表征了连续变量数据的分布情况。在外形上,因为所绘制的图形像一把把小提琴,故名“小提琴图”。小提琴图是用于观察多个数据分布情况的有效媒介,相比于箱形图,它在视觉上更令人愉悦。
函数的签名为matplotlib.pyplot.violinplot(dataset, positions=None, vert=True, widths=0.5, showmeans=False, showextrema=True, showmedians=False, quantiles=None, points=100, bw_method=None, *, data=None)。
函数的参数为:
dataset:输入数据。类型为数组或向量序列。必备参数。positions:指定小提琴的位置。刻度和极值会自动匹配箱体位置。类型为类数组结构。可选参数。默认值为range(1, N+1),N为图中小提琴的个数(子数据集的个数)。vert:小提琴的方向,当取值为True时,绘制垂直小提琴图,当取值为False时,绘制水平小提琴图。类型为布尔值,默认值为True。可选参数。widths:箱体的宽度。类型为浮点数(所有小提琴的统一宽度)或类数组结构(每个小提琴的宽度)。默认值为0.5,即图宽度的一半。showmeans:是否显示算术平均值。类型为布尔值,默认值为False。可选参数。showextrema:是否显示极值。类型为布尔值,默认值为True。可选参数。showmedians:是否显示中位数。类型为布尔值,默认值为False。可选参数。quantiles:指定分位数的位置。类型为字典,元素要求值范围为[0,1],默认值为None。可选参数。points:定义计算核密度估计的点的数量。类型为整数,默认值为100。可选参数。bw_method:用于估算带带宽的方法。类型为字符串、标量或可调用对象,默认值为'scott。可选参数。
函数返回值为字典对象。字典的键如下:
bodies:PolyCollection实例列表,每个元素表示每个小提琴的填充区域。medians:cmeans:LineCollection实例,表示每个小提琴分布的均值。cmins:LineCollection实例,表示每个小提琴分布的最低值。cmaxes:LineCollection实例,表示每个小提琴分布的最高值。cbars:LineCollection实例,表示每个小提琴分布的中心。cmedians:LineCollection实例,表示每个小提琴分布的中位数。cquantiles:LineCollection实例,表示每个小提琴分布的四分位数。
案例:对比小提琴图和箱线图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'simhei'
plt.rcParams['axes.unicode_minus'] = False
data = np.random.normal(size=1000)
plt.subplot(121)
plt.title("小提琴图")
plt.violinplot(data)
plt.subplot(122)
plt.title("箱线图")
plt.boxplot(data)
plt.show()
案例:演示基础参数

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'simhei'
plt.rcParams['axes.unicode_minus'] = False
data = np.random.normal(size=1000)
plt.subplot(331)
plt.title("默认样式")
plt.violinplot(data)
plt.subplot(332)
plt.title("水平方向")
plt.violinplot(data, vert=False)
plt.subplot(333)
plt.title("设置位置")
plt.violinplot(data, positions=[2])
plt.subplot(334)
plt.title("设置宽度")
plt.violinplot(data, widths=0.3)
plt.subplot(335)
plt.title("隐藏极值")
plt.violinplot(data, showextrema=False)
plt.subplot(336)
plt.title("显示均值")
plt.violinplot(data, showmeans=True)
plt.subplot(337)
plt.title("显示中位数")
plt.violinplot(data, showmedians=True)
plt.subplot(338)
plt.title("显示分位数")
plt.violinplot(data, quantiles=[0.2, 0.5, 0.8, 0.9])
plt.subplot(339)
plt.title("设置核密度估计点数")
plt.violinplot(data, points=10)
plt.tight_layout()
plt.show()
小提琴图详解:matplotlib绘制连续变量分布的可视化利器
本文介绍了matplotlib库中的violinplot函数,用于创建直观的小提琴图展示数据分布。通过案例展示了如何使用该函数调整样式、方向和参数,并将其与箱线图对比。重点讲解了各参数的含义及其作用,适用于理解连续数据的复杂分布情况。
1179

被折叠的 条评论
为什么被折叠?



