参考资料:用python动手学统计学,帮助文档
使用matplotlib.pyplot.violinplot()函数绘制小提琴图
小提琴图是将数值型数据的核密度图与箱线图融合在一起,具体来说是用核密度估计的结果替换了箱子,而形成的一个形似小提琴的图形。
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
ser=pd.Series([2,3,3,4,4,4,4,5,5,6])
df=pd.DataFrame({
'A':[2,3,3,4,4,4,4,5,5,6],
'B':[5,6,6,7,7,7,7,8,8,9]
})
plt.violinplot(ser)
下面介绍plt.violinplot()函数中常用的几个重要参数(参数等号后为默认设置):
(1)dataset,需要做的图数据集
plt.violinplot(dataset=df)
(2)positions=None,用于指定小提琴图中小提琴的位置。注意下图横坐标轴的变化。
plt.violinplot(dataset=ser,positions=[4])
(3)vert=True,指定小提琴是垂直方向还是水平方向,默认是垂直方向。下图为vert=False的设置。
plt.violinplot(dataset=ser,vert=False)
(4)widths=0.5,用于指定小提琴最宽部分的宽度,默认是0.5;设置为0.3的效果见下图,注意观察横坐标轴的变化:
plt.violinplot(dataset=ser,widths=0.3)
(5)showmeans=False,用于设置是否显示均值。
plt.violinplot(dataset=ser,showmeans=True)
(6)showextrema=True,用于设置是否渲染极值,简单理解为是否显示极值标记。设置为False效果如下:
plt.violinplot(dataset=ser,showextrema=False)
(7)showmedians=False,用于设置是否显示中位数。
plt.violinplot(dataset=ser,showmedians=True)
(8)quantiles=None,用于设置显示百分位线,下图显示了10%,30%,50%,70%,90%的线,以及两个极值的线。
plt.violinplot(dataset=ser,quantiles=[0.1,0.3,0.5,0.7,0.9])