目录

  • 一、基础概念
  • 二、语法
  • 三、参数详解
  • 四、实例

    一、基础概念

    小提琴图是箱线图与核密度图的结合,箱线图展示了分位数的位置,核密度图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的数据点聚集的较多,因其形似小提琴而得名。
    超详细Seaborn绘图 ——(三)violinplot - 图1
    其外围的曲线宽度代表数据点分布的密度,中间的箱线图则和普通箱线图表征的意义是一样的,代表着中位数、上下分位数、极差等。

    二、语法

    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, gridsize=100,
    4. width=0.8,inner='box', split=False, dodge=True,
    5. orient=None, linewidth=None,color=None, palette=None,
    6. saturation=0.75, ax=None, **kwargs)

    三、参数详解

  • bw:{‘scott’, ‘silverman’, float}
    内置变量值或浮点数的比例因子都用来计算核密度的带宽。实际的核大小由比例因子乘以每个分箱内数据的标准差确定。

  • cut:{float}
    以带宽大小为单位的距离,以控制小提琴图外壳延伸超过内部极端数据点的密度。设置为 0 以将小提琴图范围限制在观察数据的范围内。(例如,在 ggplot 中具有与 trim=True 相同的效果)
  • scale:{“area”, “count”, “width”}
    该方法用于缩放每张小提琴图的宽度。若为 area ,每张小提琴图具有相同的面积。若为 count ,小提琴的宽度会根据分箱中观察点的数量进行缩放。若为 width ,每张小提琴图具有相同的宽度。
  • scale_hue:{bool}
    当使用色调参数 hue 变量绘制嵌套小提琴图时,该参数决定缩放比例是在主要分组变量(scale_hue=True)的每个级别内还是在图上的所有小提琴图(scale_hue=False)内计算出来的。
  • gridsize:{int}
    用于计算核密度估计的离散网格中的数据点数目。
  • width:{float}
    不使用色调嵌套时的完整元素的宽度,或主要分组变量的一个级别的所有元素的宽度。
  • inner:{“box”, “quartile”, “point”, “stick”, None}
    控制小提琴图内部数据点的表示。若为box,则绘制一个微型箱型图。若为quartiles,则显示四分位数线。若为point或stick,则显示具体数据点或数据线。使用None则绘制不加修饰的小提琴图。
  • split:{bool}
    当使用带有两种颜色的变量时,将split设置为 True 则会为每种颜色绘制对应半边小提琴。从而可以更容易直接的比较分布。

    四、实例

    同样先绘制一个最简单两个分类变量的violinplot
    1. plt.figure(dpi=150)
    2. tips = sns.load_dataset('tips')
    3. sns.violinplot(x="day", y="total_bill", hue="smoker",
    4. data=tips)
    超详细Seaborn绘图 ——(三)violinplot - 图2

通过split是yes和no的对比更鲜明

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True)

超详细Seaborn绘图 ——(三)violinplot - 图3


改变内部数据点的表示

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True)

超详细Seaborn绘图 ——(三)violinplot - 图4

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,inner=None)

超详细Seaborn绘图 ——(三)violinplot - 图5

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,inner='quartiles')

超详细Seaborn绘图 ——(三)violinplot - 图6

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,inner='point')

超详细Seaborn绘图 ——(三)violinplot - 图7

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,inner='stick')

超详细Seaborn绘图 ——(三)violinplot - 图8


使用窄带宽来减少平滑量

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,bw=0.2)

超详细Seaborn绘图 ——(三)violinplot - 图9


缩放小提琴的宽度
默认为area,即每张小提琴图具有相同的面积

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True)

超详细Seaborn绘图 ——(三)violinplot - 图10
根据分箱中观察点的数量改变小提琴的宽度

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,scale='count')

超详细Seaborn绘图 ——(三)violinplot - 图11
每张小提琴图有相同的宽度

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,scale='width')

超详细Seaborn绘图 ——(三)violinplot - 图12


控制小提琴图外壳延伸超过内部极端数据点的密度。
为0时将小提琴图范围限制在观察数据的范围内。默认为2

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True)

超详细Seaborn绘图 ——(三)violinplot - 图13

  1. plt.figure(dpi=150)
  2. tips = sns.load_dataset('tips')
  3. sns.violinplot(x="day", y="total_bill", hue="smoker",
  4. data=tips,split=True,cut=0)

超详细Seaborn绘图 ——(三)violinplot - 图14

由于对小提琴图中的一些概念不是特别熟,就介绍这么一点。还有部分没提到的像x,y,hue,saturation等参数可参考前面的博客