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

一、基础概念

小提琴图是箱线图与核密度图的结合,箱线图展示了分位数的位置,核密度图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的数据点聚集的较多,因其形似小提琴而得名。

在这里插入图片描述
其外围的曲线宽度代表数据点分布的密度,中间的箱线图则和普通箱线图表征的意义是一样的,代表着中位数、上下分位数、极差等。

二、语法

seaborn.violinplot(x=None, y=None, hue=None, data=None,
                   order=None, hue_order=None, bw='scott',
                   cut=2, scale='area', scale_hue=True, gridsize=100, 
                   width=0.8,inner='box', split=False, dodge=True,
                   orient=None, linewidth=None,color=None, palette=None,
                   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

plt.figure(dpi=150)
tips = sns.load_dataset('tips')
sns.violinplot(x="day", y="total_bill", hue="smoker",
               data=tips)

在这里插入图片描述


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

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

在这里插入图片描述


改变内部数据点的表示

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


使用窄带宽来减少平滑量

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

在这里插入图片描述


缩放小提琴的宽度

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

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

在这里插入图片描述

根据分箱中观察点的数量改变小提琴的宽度

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

在这里插入图片描述

每张小提琴图有相同的宽度

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

在这里插入图片描述


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

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

在这里插入图片描述

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

在这里插入图片描述

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

  • 30
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值