Python violinplot()与boxplot()有什么不同
在本文中,我们将使用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 # shift mean
fig = go.Figure()
# Use x instead of y argument for horizontal plot
fig.add_trace(go.Box(x=x0))
fig.add_trace(go.Box(x=x1))
fig.show()
箱线图尺寸
可以通过设置width参数来改变每个箱线图的尺寸。默认的width为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)时可以成为直方图的出色补充。作为最早的Python可视化工具之一,Matplotlib提供了大量图表和图形,以便更好地进行分析。