在seaborn中,有几种不同的方法可以对分类数据进行可视化。类似于relplot()与scatterplot()或者lineplot()之间的关系,有两种方法可以制作这些图。有许多axes-level函数可以用不同的方式绘制分类数据,还有一个figure-level接口catplot(),可以对它们进行统一的高级访问。
将不同的分类图类型视为三个不同的家族,这是很有帮助的。下面我们将详细讨论,它们是:
分类散点图:
stripplot()(withkind="strip"; the default)
swarmplot()(withkind="swarm")
分类分布图:
boxplot()(withkind="box")
violinplot()(withkind="violin")
boxenplot()(withkind="boxen")
分类估计图:
pointplot()(withkind="point")
barplot()(withkind="bar")
countplot()(withkind="count")
这些家族使用不同的粒度级别来表示数据,我们应该根据实际情况来决定到底要使用哪个。它们有统一的 API,所以我们可以轻松地在不同类型之间进行切换,并从多个角度来观察数据。
在这里我们主要关注figure-level接口catplot()。这个函数是上述每个函数更高级别的接口,因此当我们显示每种绘图时都会引用它们,不清楚的话可以随时查看特定类型的API文档。
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
sns.set(style="darkgrid", color_codes=True)
分类散点图
在catplot()中,数据默认使用散点图表示。在seaborn中有两种不同的分类散点图,它们采用不同的方法来表示分类数据。 其中一种是属于一个类别的所有点,将沿着与分类变量对应的轴落在相同位置。stripplot()方法是catplot()中kind的默认参数,它是用少量随机“抖动”调整分类轴上的点的位置:
tips = sns.load_dataset("tips")
sns.catplot(x="day", y="total_bill", hue='day', data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a0eead50>

jitter参数控制抖动的大小,你也可以完全禁用它:
sns.catplot(x="day", y="total_bill", hue='day', jitter=False, data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a0e91550>

另一种方法使用防止它们重叠的算法沿着分类轴调整点。我们可以用它更好地表示观测分布,但是只适用于相对较小的数据集。这种绘图有时被称为“beeswarm”,可以使用 seaborn中的swarmplot()绘制,通过在catplot()中设置kind="swarm"来激活
sns.catplot(x="day", y="total_bill", hue='day', kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x1769b5fa110>

与关系图类似,可以通过使用hue语义向分类图添加另一个维。(分类图当前不支持size和style语义 )。 每个不同的分类绘图函数以不同方式处理hue语义。对于散点图,我们只需要更改点的颜色:
sns.catplot(x="day", y="total_bill", hue="sex", kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a19d4c90>

与数值数据不同,如何沿着轴顺序排列分类变量并不总是显而易见的。通常,seaborn分类绘图函数试图从数据中推断出类别的顺序。 如果您的数据具有pandas中的Categorical数据类型,则可以在此处设置类别的默认顺序。如果传递给分类轴的变量看起来是数字,则将对级别进行排序。但是数据仍然被视为分类并在分类轴上的序数位置(特别是0,1,......)处理,即使用数字来标记它们:
sns.catplot(

最低0.47元/天 解锁文章
3693

被折叠的 条评论
为什么被折叠?



