分类图的绘制,采用的是sns.catplot来实现的。cat是category的简写。这个方法默认绘制的是分类散点图,如果想要绘制其他类型的图,同样也是通过kind参数来指定。并且分类绘图中,分成分类散点图,分类分布图,分类统计图。
catplot方法不能使用size和style参数
分类散点图
- stripplot和swarmplot。
- swramplot采用了一定的算法,可以让点不会重叠。
- 分类散点图,特别是swarmplot,不太适合数据量特别大的,否则不太美观。 ```python import seaborn as sns import pandas as pd import numpy as np import matplotlib.pyplot as plt
tips = pd.read_csv(“dataset/tips.csv”) tips.head() ‘’’ total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ‘’’ sns.catplot(x=”day”,y=”total_bill”,data=tips,hue=”sex”)
<br />以上图展示的是按照星期几的分类散点图,看起来这些点有点重合,如果想要散开来,那么可以使用catplot(kind="swarm")```pythonsns.catplot(x="day",y="total_bill",data=tips,kind="swarm",hue="sex")

想要将垂直的分类散点图变成横向的,只需要把x和y对应的值进行互换即可。
sns.catplot(y="day",x="total_bill",kind="swarm",data=tips,hue="sex")
分类分布图
箱线图:boxplot或者是catplot(kind=”box”)。然后使用hue参数可以进行分组。
小提琴图:violinplot或者是catplot(kind=”violin”)。小提琴图是由KDE曲线(核密度估计曲线)绘制而成。inner参数可以控制小提琴中的图,可以为box,quartile,stick,point。可以使用hue参数来进行分组,并且可以指定split=True,来将整个小提琴分割开来进行展示。
箱线图
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")
#g = sns.catplot(x="NOC",y="Height",data=need_athletes,kind="box",hue="Sex")
#g.fig.set_size_inches(20,5) # 如果使用catplot绘图,那么得使用这个方法设置fig的尺寸
plt.xticks(range(len(countries.values())),countries.values())
小提琴图
小提琴实际上就是两个对称的核密度曲线合并起来,然后中间是一个箱线图(也可以为其他图)组成的。通过小提琴图可以看出数据的分布情况。
sns.violinplot(x="day",y="total_bill",data=tips,hue="sex",split=True)

小提琴的中间默认绘制的是箱线图,也可以修改为其他类型的。可以通过inner参数修改,这个参数有以下几个选项:
- box:默认的,箱线图。
- quartile:四分位数。上下四分位数加中位数。

- point:散点。

- stick:线条。
分类统计图
- 条形图:barplot,他会自动进行统计(平均数、比例等),也可以通过estimator参数来修改统计函数。
- 柱状图:countplot,只能统计某个变量数据的个数。x和y只能传一个。
- 点线图:pointplot,可以看出某个变量的变化关系。
条形图
seaborn中的条形图具有统计功能,可以统计出比例,平均数,也可以按照你想要的统计函数来统计。
统计平均数# 统计星期三到星期天的消费总额的平均数 sns.catplot(x="day",y="total_bill",data=tips,kind="bar") # 上面黑色的线条代表置信度,越长代表数据越离散
统计比例 ```python titanic = pd.read_csv(“dataset/titanic.csv”) titanic.head() ‘’’ survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone 0 0 3 male 22.0 1 0 7.2500 S Third man True NaN Southampton no False 1 1 1 female 38.0 1 0 71.2833 C First woman False C Cherbourg yes False 2 1 3 female 26.0 0 0 7.9250 S Third woman False NaN Southampton yes True 3 1 1 female 35.0 1 0 53.1000 S First woman False C Southampton yes False 4 0 3 male 35.0 0 0 8.0500 S Third man True NaN Southampton no True ‘’’
统计男女中获救的比例
sns.catplot(data=titanic,kind=”bar”,x=”sex”,y=”survived”)
<br />使用自定义函数
```python
# 按日期统计支付金额之和
sns.catplot(x="day",y="total_bill",data=tips,kind="bar",estimator=sum)

# 自定义统计函数,统计出每个性别下获救的人数
sns.barplot(x="sex",y="survived",data=titanic,estimator=lambda values:sum(values))
柱状图
柱状图是专门用来统计某个单一变量出现数量的图形。
如果想绘制横向的柱状图,就设定y的值,不设定x
sns.catplot(x="sex",data=titanic,kind="count")

也可以通过使用hue参数来指定分组
sns.catplot(x="day",kind="count",data=tips,hue="sex")
点线图
点线图可以非常方便的看到变量之间的趋势变化。
sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")

