2. seaborn-可视化分类数据

seaborn中,有几种不同的方法可以对分类数据进行可视化。类似于relplot()scatterplot()或者lineplot()之间的关系,有两种方法可以制作这些图。有许多axes-level函数可以用不同的方式绘制分类数据,还有一个figure-level接口catplot(),可以对它们进行统一的高级访问。

将不同的分类图类型视为三个不同的家族,这是很有帮助的。下面我们将详细讨论,它们是:

分类散点图:

stripplot() (with kind="strip"; the default)

swarmplot() (with kind="swarm")

分类分布图:

boxplot() (with kind="box")

violinplot() (with kind="violin")

boxenplot() (with kind="boxen")

分类估计图:

pointplot() (with kind="point")

barplot() (with kind="bar")

countplot() (with kind="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语义向分类图添加另一个维。(分类图当前不支持sizestyle语义 )。 每个不同的分类绘图函数以不同方式处理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(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值