matplotlib.pyplot.violinplot()函数
Matplotlib是Python中一个非常棒的二维数组绘图可视化库。Matplotlib是一个基于NumPy数组构建的多平台数据可视化库,用于更广泛的SciPy堆栈。
Matplotlib.pyplot.violinplot ()
matplotlib.pyplot.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,它将创建一个垂直的小提琴图,否则将设置一个水平的小提琴图。
- width:它接受一个类似数组的对象,默认值为0.5。它用于设置每个小提琴的最大宽度,可以是标量或矢量。如果使用默认值,则大约占用水平空间的一半。
- showmeans:它接受一个布尔值,默认设置为False。如果设置为true,则切换平均值的呈现
- showextreama:它接受一个布尔值,默认设置为False。如果设置为True,则切换极值的呈现。
- showmedians:它接受布尔值,默认设置为False。如果设置为True,它将切换中值的呈现。
- points:它接受标量,默认值为100。它用于定义计算每一个高斯核密度估计的点的总数。
- bw_method:它是一个可选参数,接受字符串,标量或callable。利用该方法计算了估计器的带宽。它可以是“silverman”,“scott”,可拨打或标量常数。如果是标量,则直接用作kde.factor。如果它是callable,那么它只接受GaussianKDE实例并返回一个标量。如果无,则使用Scott
返回:此函数返回一个字典,将小提琴图的每个组件映射到各自集合实例的列表。返回的字典有以下键:
- body: matplotlib.collections.PolyCollection的实例列表,包含每个小提琴的填充区域。
- cmeans:创建一个matplotlib.collections.LineCollection的实例,以识别每个小提琴分布的平均值
- cmins:一个matplotlib.collections.LineCollection的实例,创建以识别每个小提琴分布的底部。
- cmax:一个matplotlib.collections.LineCollection的实例,用于识别每个小提琴分布的顶部。
- cbars:一个matplotlib.collections.LineCollection的实例,用于识别每个小提琴分布的中心。
- cmedians:一个matplotlib.collections.LineCollection的实例,用于识别每个小提琴分布的平均值。
示例1
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(21)
data = np.random.random(111)
quartile1, median, quartile3 = np.percentile(data,
[ 50, 75,100],
axis=0)
plt.violinplot(data)
plt.vlines(1, quartile1,
quartile3,
color='r',
linestyle='--')
plt.hlines(quartile1,.7,1.2)
plt.hlines(quartile3,.7,1.2)
输出:
示例2
import matplotlib.pyplot as plt
# Fixing random state for
# reproducibility
np.random.seed(15437660)
# creating randomly generate
# collections / data
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)
## combining these different
# collections into a list
data_plotter = [coll_1, coll_2,
coll_3, coll_4]
plt.violinplot(data_plotter)
plt.show()
输出: