如何在Python中使用 Seaborn 制作分组小提琴图?
这篇文章描述了如何在Python中使用 Seaborn 制作一个分组的小提琴图。 Violinplot 是一种将数据可视化为箱线图与核密度图组合以生成新型图的好方法。
在本文中,我们将使用 iris 数据集来绘制数据。它内置于 seaborn 中,可以使用 load_dataset 方法加载。鸢尾花数据集有四个特征( sepal_length sepal_width petal_length petal_width),它们都是数字,一个是包含花名的目标列(物种)。 (弗吉尼亚,Setosa,杂色)。在 seaborn 中,我们可以使用 seaborn.violinplot() 方法绘制小提琴图。
Syntax: seaborn.violinplot(x, y, hue, data, inner,linewidth,…)
Parameters:
1. x, y, hue: names of variables in data or vector data, optional
2. data: DataFrame, array, or list of arrays, optional
3. inner: {“box”, “quartile”, “point”, “stick”, None}, (optional) : Represents datapoints in the violin interior.
4. linewidth float, (optional): Width of the gray lines that frame the plot elements.
Returns:
ax: matplotlib Axes
以下示例将帮助您更好地理解:
示例 1:绘制单个水平小提琴图。
Python3
import seaborn as sns
import pandas as pd
datasets = sns.load_dataset('iris')
datasets.head()
sns.violinplot(datasets['sepal_length'])
Python3
import seaborn as sns
import pandas as pd
datasets = sns.load_dataset('iris')
datasets.head()
sns.violinplot(x='species', y='sepal_width', data=datasets,
inner="quart", linewidth=1)
Python3
import seaborn as sns
import pandas as pd
datasets = sns.load_dataset('iris')
datasets.head()
sns.violinplot(x='species', y='petal_length', data=datasets,
inner="quart", linewidth=1)
输出:
在上图中,小白点是特征的中位数,细线代表四分位距。
除了传递单个数字列之外,我们还可以传递一个分类列。在我们的例子中,物种。
示例 2:使用 Seaborn 绘制分组的小提琴图。
(使用 sepal_width 和物种列创建分组的小提琴图。)
蟒蛇3
import seaborn as sns
import pandas as pd
datasets = sns.load_dataset('iris')
datasets.head()
sns.violinplot(x='species', y='sepal_width', data=datasets,
inner="quart", linewidth=1)
输出:
在此图中,x 轴代表三种不同种类的花。例如(Virginica、Setosa、Versicolor)。从上图我们可以很容易地推断出 Setosa 的萼片宽度比其他两个大。但是单独的萼片宽度并不能帮助我们区分这三个类别。因此,在构建我们的机器学习模型时需要考虑其他功能。小提琴图还提供了有关特征概率分布的信息,例如 Versicolor 类略微偏斜。
示例 3 :绘制 petal_length 与物种之间的小提琴图。
蟒蛇3
import seaborn as sns
import pandas as pd
datasets = sns.load_dataset('iris')
datasets.head()
sns.violinplot(x='species', y='petal_length', data=datasets,
inner="quart", linewidth=1)
输出:
用这个特性区分类比前一个要好得多。