小提琴图(violinplot)与箱线图(boxplot)扮演类似的角色,它显示了定量数据在一个(或多个)分类变量的多个层次上的分布,这些分布可以进行比较。不像箱线图中所有绘图组件都对应于实际数据点,小提琴绘图以基础分布的核密度估计为特征。
    Seaborn中的小提琴图的由violinplot ()方法实现,violinplot ()的参数及其意义如下:

    1. seaborn.violinplot(x=None, y=None, hue=None, data=None,
    2. order=None, hue_order=None, bw='scott',
    3. cut=2, scale='area', scale_hue=True,
    4. gridsize=100, width=0.8, inner='box',
    5. split=False, dodge=True, orient=None,
    6. linewidth=None, color=None, palette=None,
    7. saturation=0.75, ax=None, **kwargs)

    (1)
    split:将split设置为True则绘制分拆的小提琴图,以比较经过hue拆分后的两个量。
    (2)
    scale_hue:bool,当使用色调变量(hue参数)嵌套小提琴时,此参数确定缩放是在主要分组变量(scale_hue = True)的每个级别内,还是在图上的所有小提琴(scale_hue = False)内计算出来的。
    (3)
    orient:”v”|”h” 用于控制图像是水平还是竖直显示,通常是从输入变量的dtype推断出来的,此参数一般当不传入x、y,只传入data的时候使用。
    (4)
    inner:控制小提琴图内部数据点的表示,有“box”、 “quartile”、 “point”、“stick”四种方式。
    (5)
    scale:该参数用于缩放每把小提琴的宽度,有“area”, “count”, “width”三种方式
    (6)
    cut:float,距离,以带宽大小为单位,以控制小提琴图外壳延伸超过内部极端数据点的密度。设置为“0”以将小提琴范围限制在观察数据的范围内,在ggplot中具有与trim = True相同的效果。
    (7)
    width:float,控制小提琴图的宽度(比例)。
    小提琴图可以用于查看密度分布,数据越稠密越宽,越稀疏越窄,绘制效果如图所示。

    1. import pandas as pd # 导入pandas库
    2. import warnings # 载入当前版本seaborn库时会有警告出现,先载入warnings,忽略警告
    3. import seaborn as sns # 导入seaborn库
    4. import matplotlib.pyplot as plt # 导入matplotlib库
    5. warnings.filterwarnings("ignore") # 忽略警告
    6. sns.set(style="white", color_codes=True) # 确定主题为white
    7. iris = pd.read_csv("iris.csv") # 读取csv数据并转为Pandas的 DataFrame格式
    8. # violinplot 小提琴图,查看密度分布,结合了前面的两个图,并且进行了简化
    9. # 数据越稠密越宽,越稀疏越窄
    10. sns.violinplot(x="Species", y="PetalLengthCm", data=iris, size=6)
    11. plt.show()

    image.png
    小提琴图
    image.png
    箱线图+散点图