violinplot() 与 boxplot() 有何不同?

pythonserver side programmingprogramming更新于 2024/2/24 8:28:00

在本文中,我们将使用 Python 了解 violinplot() 和 boxplot() 之间的区别。

什么是小提琴图?

小提琴图是一种类似于箱线图的统计图表,但每侧都有一个旋转的核密度图。"小提琴图"这个名字源于图表的形状与小提琴的形状相似。

小提琴图用于可视化数据集的分布,并显示数据在不同值下的概率密度。小提琴图显示样本的数据分布,最厚的部分显示值最集中的位置。相反,较薄的部分显示值不太集中的位置。

什么是箱线图?

箱线图显示一个或多个组的数值变量的分布。尽管它隐藏了单个数据集数据点,但它可以轻松访问中位数、四分位数和异常值。Seaborn 库的 boxplot 函数使在 Python 中创建箱线图变得容易。

箱线图只能表示有限的信息,但它们更容易理解,尤其是在比较不同的组时。虽然比密度曲线更难理解且视觉上更嘈杂,但密度曲线都是关于显示分布信息的。但是,当将两者整合到小提琴图中时,它们会相互增强,从而产生最佳效果。

boxplot() 方法需要以下语法 -

matplotlib.pyplot.boxplot(data, notch, vert, patch_artist, widths)

小提琴图

箱形图

以下是小提琴图的关键元素及其解释方法 -

小提琴形状 - 小提琴形状是数据直方图的平滑版本,它显示数据在不同值下的概率密度。小提琴最宽的部分代表数据点密度最高。小提琴较细的部分代表数据点密度较低。

小提琴内的框 - 小提琴图内的框代表数据集的四分位数。框的顶部和底部分别是上四分位数和下四分位数。框中间的线是数据的中位数。框还将任何异常值显示为须线外的单个点。

小提琴内的"棍子"(如果有)- 小提琴内的棍子代表原始数据点。它让人了解数据点的实际分布。

小提琴的宽度 - 小提琴的宽度代表样本大小。小提琴越宽,表示样本量越大,反之亦然。

箱线图通常使用 matplotlib 库的 boxplot() 函数创建。

箱线图通过 numpy.random.normal() 方法生成随机数据。平均值、标准差和所需值的数量作为其参数。

ax.boxplot() 函数的数据值可以是 Numpy 中的数组数组、Python 中的数组列表或数组元组。

使用 Seaborn 制作小提琴图

名为 Seaborn 的 Python 包可让您轻松创建优质图表。由于其小提琴功能,它非常适合创建密度图。您可以按照下面的图表指导您使用它,从非常简单的小提琴图到更专业的图。

使用小提琴图的最佳实践

考虑组的顺序。

当没有内在顺序时,可以改变小提琴图中绘制组的顺序,这可以帮助您了解有关数据的更多信息。例如,根据中位数对组进行排序可以明确其顺序。

垂直与水平小提琴图

小提琴图可以是垂直的,也可以是水平的。两者之间的主要区别在于绘图的方向。

垂直小提琴图是一种更常见的类型,它以 x 轴作为被测量的变量,以 y 轴作为数据的频率或概率密度来绘制。小提琴形状是垂直绘制的,小提琴的最宽部分代表数据点的最高密度。

另一方面,水平小提琴图以 y 轴作为被测量的变量,以 x 轴作为频率或概率密度来绘制。小提琴形状是水平绘制的,小提琴的最宽部分代表数据点的最高密度。

将小提琴图绘制为垂直还是水平取决于您的具体用例和您正在处理的数据。一般来说,垂直小提琴图更常见,也是使用频率最高的,但在某些情况下,水平小提琴图可能更有用,可以显示比较结果。

基本水平箱线图

import plotly.graph_objects as go

import numpy as np

x0 = np.random.randn(50)
x1 = np.random.randn(50) + 2 # 偏移均值

fig = go.Figure()
# 使用 x 代替 y 参数绘制水平图
fig.add_trace(go.Box(x=x0))
fig.add_trace(go.Box(x=x1))

fig.show()

箱线图大小

可以使用宽度参数更改单个箱线图的大小。默认宽度为 1,因此任何小于该宽度的值都会使箱子的宽度变小。

import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')
df.head()
sns.boxplot( x=df["species"], y=df["sepal_length"], width=0.3);
plt.show()

结论

由于配置内核和带宽的难度增加,小提琴图不如箱线图等替代图表那么流行。此外,它可能在审美上分散注意力,尤其是当图表类型叠加时。如果您需要制作一个图表来向不熟悉小提琴图的群体展示发现,请考虑使用更简单、更直接的表示形式,例如箱线图。

箱线图是一种未充分利用的技术,可以将大量与数据相关的信息压缩为单个可视化。在进行探索性数据分析 (EDA) 时,箱线图可能是直方图的绝佳补充。 Matplotlib 是最早的 Python 可视化工具之一,它提供了大量的图形和图表以便于更好地进行分析。


相关文章