小提琴图是箱线图与核密度图的结合,箱线图展示了分位数的位置,核密度图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的数据点聚集的较多,因其形似小提琴而得名。
其外围的曲线宽度代表数据点分布的密度,中间的箱线图则和普通箱线图表征的意义是一样的,代表着中位数、上下分位数、极差等。
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等参数可参考前面的博客
