Python violinplot():绘制小提琴图(附带实例)
散点图给出的基础分布与分布变量的信息很少,因此可以使用小提琴图(Violinplots)来分析。
在 Matplotlib 中,提供了 matplotlib.pyplot.violinplot() 函数可以为数据集的每一列或数据集序列中的每个向量绘制小提琴图。所有填充区域将扩展,以显示整个数据范围,其中的行的平均值、中值、最大值和最小值是可选的。
violinplot() 函数的格式为:
【实例】根据给定的数据绘制小提琴图。

图 1 小提琴图
在 Matplotlib 中,提供了 matplotlib.pyplot.violinplot() 函数可以为数据集的每一列或数据集序列中的每个向量绘制小提琴图。所有填充区域将扩展,以显示整个数据范围,其中的行的平均值、中值、最大值和最小值是可选的。
violinplot() 函数的格式为:
matplotlib.pyplot.violinplot(dataset, positions=None, vert=True, widths=0.5, showmeans=False, showextrema=True, showmedians=False, points=100, bw_method=None,*, data=None)
- dataset 是一个必需的参数,通常是一个数组或向量序列,用于为函数提供数据;
- positions 是一个类似数组的对象,默认值是 1 到 n 的数组(即 default=[1,2,3,…,n]),用来设置小提琴的位置。将自动设置限制和刻度以匹配位置;
- vert 参数接受一个布尔值。该参数默认为 False。如果设置为 True,将创建一个垂直的小提琴图,否则将设置一个水平的小提琴图;
- widths 接受一个类似数组的对象,默认值为 0.5。它用于设置每个小提琴的最大宽度,可以是标量或矢量。如果使用默认值,则大约占用水平空间的一半;
- showmeans 接受一个布尔值,默认设置为 False。如果设置为 True,则切换平均值的呈现;
- showextrema 接受一个布尔值,默认设置为 False。如果设置为 True,则切换极值的呈现;
- showmedians 接受布尔值,默认设置为 False。如果设置为 True,它将切换中值的呈现;
- points 接受标量,默认值为 100。它用于定义计算每一个高斯核密度估计的点的总数;
- bw_method 是一个可选参数,接受字符串、标量或 callable。利用该方法计算了估计器的带宽。如果是标量,则直接用作 kde.factor。如果是 callable,那么只接受 Gaussian KDE 实例并返回一个标量。如果无,则使用 Scott。
【实例】根据给定的数据绘制小提琴图。
import matplotlib.pyplot as plt # 固定随机状态以实现再现性 np.random.seed(15437660) # 创建随机生成的集合/数据 coll_1 = np.random.normal(100, 10, 200) coll_2 = np.random.normal(80, 30, 200) coll_3 = np.random.normal(90, 20, 200) coll_4 = np.random.normal(70, 25, 200) # 将这些不同的集合合并到一个列表中 data_plotter = [coll_1, coll_2, coll_3, coll_4] plt.violinplot(data_plotter) plt.show()运行程序,效果如下图所示:

图 1 小提琴图