当前位置:网站首页>5-2 Seaborn 分类绘图
5-2 Seaborn 分类绘图
2022-08-09 00:29:00 【刚入门的小仙女】
Seaborn 分类绘图
Seaborn是基于 Matplotlib 的图形可视化库。该库提前定义好了一套自己的风格,也封装了一系列的方便的绘图函数,之前通过 matplotlib 需要很多代码才能完成的绘图,使用 seaborn 可能就是一行代码的事情。总结一句话:使用 seaborn 绘图比 matplotlib 更美观、简单。
2. 分类绘图
分类图的绘制采用的是 sns.catplpt 来实现的,cat 是 category 的简写。这个方法默认绘制的是 分类散点图 ,如果想要绘制其他类型的图,同样也是通过 kind 参数来指定的。并且分类绘图中,分成分类散点图、分类分布图、分类统计图。
2.1 分类散点图
分类散点图比较适合数据量不是很多的情况,使用 catplot 来实现,但是也有以下两个特别的方法:
(1) stripplot():catplot(kind=“strip”),默认的
(2) swarmplot():catplot(kind=“swarm”)
补充:catplot 方法不能使用 size 和 style 参数
2.1.1 stripplot
#按照星期几的分类散点图
#hue用来控制第三个变量的颜色显示的
sns.catplot(x="day",y="total_bill",data=tips,kind="strip",hue="sex")

2.1.2 swarmplot
#采用了一定的算法让点不会重叠
#只适合小数据集
#相当于sns.catplot(x="day",y="total_bill",data=tips,kind="swarm")
sns.swarmplot(x="day",y="total_bill",data=tips)

2.1.3 横向分类散点图
想要将垂直的分类散点图变成横向的,只需要把 x 和 y 对应的值进行互换即可。
#将上例中x值与y值互换
sns.swarmplot(x="total_bill",y="day",data=tips)

2.2 分类分布图
分类分布图主要是根据分类来看,然后再每个分类下的数据分布情况。也是通过 catplot 来实现,以下三个方法分别是不同的 kind 参数
(1) boxplot():catplot(kind=“box”)
(2) violinplot():catplot(kind=“violin”)
(3) boxenplot():catplot(kind=“boxen”)
2.2.1 箱线图
#数据准备
athletes = pd.read_csv("athlete_events.csv")
countries={
'CHN':'中国',
'JPN':'日本',
'KOR':'韩国',
'USA':'美国',
'CAN':'加拿大',
'BRA':'巴西',
'GBR':'英国',
'FRA':'法国',
'ITA':'意大利',
'ETH':'埃塞俄比亚',
'KEN':'肯尼亚',
'NIG':'尼日利亚',
}
my_athletes = athletes[athletes['NOC'].isin(list(countries.keys()))]
#设置字体
plt.rcParams['font.sans-serif']=['SimHei']
#设置大小
plt.figure(figsize=(20,5))
sns.boxplot(x="NOC",y="Height",data=my_athletes,hue="Sex")
plt.xticks(range(len(countries.values())),countries.values())
plt.show()

2.2.2 小提琴图
小提琴实际上就是两个对称的核密度曲线(KDE曲线)合并起来,然后中间是一个箱线图(也可以为其他图)组成的。通过小提琴图可以看出数据的分布情况。
小提琴的中间默认绘制的事箱线图,也可以修改为其他类型的。可以通过 inner 参数修改,这个参数有以下选项:
(1) box:默认的,箱线图
(2) quartile:四分位数。上下四分位数加中位数
(3) point:散点
(4) stick:线条
tips = pd.read_csv("dataset/tips.csv")
#一个小提琴图
sns.violinplot(x="day",y="total_bill",data=tips,inner="stick")

#多个小提琴图
#使用hue参数进行分组
sns.violinplot(x="day",y="total_bill",data=tips,inner="quartile",hue="sex")

#split表示是否将整个小提琴分割开来进行展示
sns.violinplot(x="day",y="total_bill",data=tips,inner="quartile",hue="sex",split=True)

2.2.3 增强箱线图
增强箱线图可以展示更多的分位,用的是 boxenplot。
plt.rcParams['font.sans-serif']=['SimHei']
plt.figure(figsize=(20,5))
sns.boxenplot(x="NOC",y="Height",data=my_athletes,hue="Sex")
plt.xticks(range(len(countries.values())),countries.values())
plt.show()

2.3 分类统计图
分类统计图则是根据分类统计每个分类下的数据的个数或者比例。有以下几种方式:
(1) barplot():catplot(kind=“bar”)
(2) pointplot():catplot(kind=“point”)
(3) countplot():catplot(kind=“count”)
2.3.1 条形图
Seaborn 中的条形图具有统计的功能,可以自动统计出比例、平均数,也可以按照你想要的统计函数来统计。
2.3.1.1 统计平均数
#统计星期三到星期天的消费总额平均数
sns.catplot(x="day",y="total_bill",data=tips,kind="bar")

2.3.1.2 统计总额
sns.catplot(x="day",y="total_bill",data=tips,kind="bar",estimator=sum)

2.3.1.3 统计比例
titanic = pd.read_csv("dataset/titanic.csv")
#默认为获救比例,设置estimator=sum可统计获救总人数
sns.catplot(x="sex",y="survived",data=titanic,kind="bar")

2.3.2 柱状图
柱状图是专门用来统计某个单一变量出现数量的图形。x 和 y 只能传一个。
sns.catplot(x="sex",data=titanic,kind="count")

#横向柱状图
sns.catplot(y="sex",data=titanic,kind="count")

#分类显示
sns.catplot(x="sex",data=titanic,kind="count",hue="survived")

2.3.3 点线图
点线图可以非常方便的看到变量之间的趋势变化。
sns.catplot(x="sex",y="survived",data=titanic,kind="point")

sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")

边栏推荐
猜你喜欢

年初离职,学习半年源码,终于拿到了蚂蚁 Offer,分享面试过程

轻量级网络ESPNet系列 空洞卷积简介

笔记&代码 | 统计学——基于R(第四版) 第十章 多元线性回归

图像去雾概述

笔记&代码 | 统计学——基于R(第四版) 第十一章 时间序列预测

Non-major graduates, five-faced Ali: Four rounds of technical + HR have already taken an offer

数学建模美赛题型分类

笔记&代码 | 统计学——基于R(第四版) 第九章一元线性回归

"Replay" interview BAMT came back to sort out 398 high-frequency interview questions to help you get a high salary offer
![[Deep Learning] TensorFlow Learning Road 2: Introduction to ANN and TensorFlow Implementation](/img/be/4aee219287ebcdada4fdd378021804.png)
[Deep Learning] TensorFlow Learning Road 2: Introduction to ANN and TensorFlow Implementation
随机推荐
XOR Inverse
supervisor 安装、配置、常用命令
对付流氓软件
利用Ehcache分布式缓存,轻松打造商业级高并发、高性能API接口!
轻量级神经网络SqueezeNext--考虑硬件提速
unity自学笔记--变色跑酷
阿里云服务器买完不知道如何使用(新手入门教程)
如何选择云服务器与轻量应用服务器?谈谈自己的看法
千分位数字
光照衰减-Lights
Unified identity management platform IAM single sign-on process and third-party interface design scheme
tf.pad()--填充操作
v-model 简单理解
A - A + B Problem II
统一身份管理平台IAM单点登录流程及第三方接口设计方案
数学建模美赛题型分类
GaN图腾柱无桥 Boost PFC(单相)四(仿真理解)
"Replay" interview BAMT came back to sort out 398 high-frequency interview questions to help you get a high salary offer
Sencha Touch延迟加载模块提高程序启动时性能
理财产品募集期和开放期有什么区别?