提琴图

什么是提琴图?

提琴图使用密度曲线描绘一个或多个组的数值数据分布。每条曲线的宽度对应每个区域中数据点的近似频率。密度通常伴随着叠加的图表类型,例如 箱线图,以提供更多信息。

Violin plot showing scores for participants by experiment condition

上面的小提琴图描绘了一个虚构实验的结果,该实验有一个对照组和两个实验条件。每条密度曲线的中间有一个小箱线图,矩形显示了第一和第三四分位数的位置,中间的点表示中位数。从图中我们可以看出,与对照相比,这两种实验技术提供了不同的益处。然而,与其他两组相比,第二个实验条件(B)的分布要长得多,没有明显的峰值。这个事实如果仅用箱线图是无法发现的。

什么时候应该使用小提琴图


当你想要观察数值数据的分布时,可以使用小提琴图,尤其是在你想要比较多组之间的分布差异时。可以通过比较每个组密度曲线的峰值、谷值和尾部,来查看组之间的相似之处或不同之处。通常会在小提琴图中添加额外的元素,如箱线图的四分位数,以提供更多比较组的方法,将在下文讨论

密度曲线的简要解释

密度曲线,也称为核密度图或核密度估计(KDE),是一种相对不常见的表示数据分布的方式,与更常见的直方图相比。下面,我们将简要解释密度曲线是如何构建的。

在核密度估计中,每个数据点在其真实值周围贡献一个小区域。这个区域的形状称为核函数。核可以有不同的形状,从平滑的钟形曲线到尖锐的三角形峰值。此外,核可以有不同的宽度,或带宽,这会影响每个单个数据点的影响。带宽大小通常是通过使用数学经验法则确定的,但可以根据要绘制数据的形状和偏斜进行调整。

Examples of kernel functions with different bandwidths

为了构建最终的密度曲线,所有数据点的区域被堆叠成一个完整的整体。每个数据点对最终分布有相同的影响。在一个区域内数据点越多,该区域的密度曲线高度就会增加。

Example of building a kernel density estimate

核密度估计在拥有相当数量数据时效果最佳,这样可以获得更稳定的密度估计。当数据点较少时,曲线的平滑度或最大值和最小值之外的尾部长度很容易让人产生误导。

在小提琴图中,个体密度曲线是围绕中心线构建的,而不是堆叠在基线上。除了显示模式的差异外,小提琴图中的曲线在构建和解释上与其它曲线完全相同。

Kernel density estimate on baseline and center line

数据结构示例

#### CONDITION #### SCORE
控制 30
实验 A 33
实验 B 25
实验 A 36

创建小提琴图最常见的数据结构方式是通过一个包含两列的表格。每一行对应一个数据点,而单元格的值分别表示每个点的分组归属和数值。所有的图表特征都将从这些原始输入中自动计算得出。如果所有数据都在同一个分组中,那么表示分组归属的列将不是必需的。

使用小提琴图的最佳实践


考虑组的顺序

当小提琴图中的组没有固有的排序时,可以通过改变组绘制的顺序来使数据更易于洞察。例如,按中值排序组可以立即显示组的排名。

Violin plot sorted alphabetically and by median

常见的小提琴图选项


叠加其他图表类型

单独使用时,小提琴图实际上可能相当有限。如果不同组之间的对称性、偏斜度或其他形状和变异特征不同,就很难精确比较组之间的密度曲线。正因如此,小提琴图通常与其他叠加的图表类型一起使用。

小提琴图最常见的补充是箱线图。通常,这种补充被视为默认情况;小提琴图有时被描述为 KDE 和箱线图的组合。在某些情况下,为了减少视觉噪音,只会绘制箱线图的部分特征,例如三条表示四分位数位置的线,而不包括须线。

Violin plot with internal box plot and quartile lines

除了箱线图,还有其他分布图可以叠加显示。毛毯图或条纹图将每个数据点作为刻度标记或点添加到中心线上,类似于一维的散点图。群集图将数据点从中心线偏移以避免重叠。另一种策略是从中心线随机抖动点;抖动操作更容易执行,但它并不能保证避免重叠。

Violin plot with multiple ways of plotting internal data points

这些替代图表叠加效果最好用于每个组中的数据点数量较低到中等的情况。虽然显示单个数据点可以阐明密度曲线是如何创建的,并揭示组大小方面的信息,这些信息在 violin 图中通常不明显,但它们的存在会增加图表的噪声,并可能分散注意力。此外,一旦组的大小足够大,密度曲线和箱线图的分布估计将足够稳定,以提供合理的见解。

垂直与水平小提琴图

小提琴图可以使用垂直密度曲线或水平密度曲线进行方向设置。当需要显示较长的组名或存在大量绘图组时,水平方向的小提琴图是一个不错的选择。通常情况下,在垂直轴上扩展图形比在水平轴上更容易;这在需要足够空间以清晰地观察密度曲线形状时非常重要。

Violin plots can be oriented vertically as well as horizontally

脊线图

使用密度曲线比较组间分布的另一种方法是使用脊线图。脊线图由垂直堆叠的常规密度曲线组成。通常,曲线会稍微错开,有轻微的重叠,这可以节省空间,与完全分离坐标轴相比。这种重叠意味着密度曲线往往不会叠加任何其他内容进行绘制。当数据在组间存在明显模式时,脊线图最为适用。

A ridgeline plot depicts data distributions through slightly offset density curves

相关图

密度曲线和箱线图

如前所述,小提琴图通常渲染为重叠的密度曲线、箱子和须线。 箱线图  在传达信息方面有限制,但它们更直观易懂,尤其是在进行组间比较时。密度曲线专注于描绘分布细节,但解释起来更困难,视觉上更杂乱。但在小提琴图中结合使用时,这两种图表类型相互补充,取长补短。

话虽如此,在某些情况下,单独创建箱线图会显得尤为突出。如果需要绘制很多组数据,箱线图的简洁性可以成为一个巨大的优势。相比于密度曲线,任何一个箱线图和须线所需的显示空间要少得多。当空间有限或展示统计摘要最为重要时,箱线图可能比小提琴图更可取。

Box plot showing daily downloads, grouped by month

直方图

与密度曲线相比,直方图 是更传统、更广为人知的用于描绘分布的图表类型。虽然设置核密度估计(KDE)需要考虑核形状和带宽,但创建直方图需要考虑箱宽和边缘对齐的位置。对于这两种图表类型,这些参数的选择都会影响最终图形的外观。

通常情况下,直方图以底部基线为基准进行水平可视化。可以使用中心对齐的直方图代替核密度估计来构建小提琴图作为主体,但这往往需要自定义组合可视化元素。

Comparison of multiple histograms versus violin plot

可视化工具


小提琴图由于设置核函数和带宽的额外复杂性,不如箱线图等其他图表常见。它们也可能在视觉上显得杂乱,尤其是在叠加其他图表类型时。如果你正试图向不熟悉小提琴图的观众展示发现,选择一个更简单、更直观的可视化方式(如箱线图)可能更好。

小提琴图是用于数据可视化的多种图表类型之一。您可以通过阅读我们关于基本图表类型如何选择数据可视化类型的文章,或浏览图表分类下的全部文章来了解更多信息。