本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

分类绘图

分类图的绘制,采用的是sns.catplot来实现的。catcategory的简写。这个方法默认绘制的是分类散点图,如果想要绘制其他类型的图,同样也是通过kind参数来指定。并且分类绘图中,分成分类散点图,分类分布图,分类统计图。

一、分类散点图:

分类散点图比较适合数据量不是很多的情况,他是用catplot来实现,但是也有以下两个特别的方法。

  1. stripplot()catplot(kind="strip"),默认的。
  2. swarmplot()catplot(kind="swarm")

1.1. stripplot:

示例代码如下:

sns.catplot(x="day",y="total_bill",data=tips,hue="sex")

示例图如下:
catplot1.png

1.2. swarmplot:

以上图展示的是按照星期几的分类散点图,看起来这些点有点重合,如果想要散开来,那么可以使用catplot(kind="swarm")。示例代码如下:

sns.catplot(x="day",y="total_bill",kind="swarm",data=tips,hue="sex")

catplot2.png

catplot方法不能使用sizestyle参数。

1.3. 横向分类散点图:

想要将垂直的分类散点图变成横向的,只需要把xy对应的值进行互换即可。

sns.catplot(y="day",x="total_bill",kind="swarm",data=tips,hue="sex")

效果图如下:
catplot3.png

二、分类分布图:

分类分布图,主要是根据分类来看,然后在每个分类下数据的分布情况。也是通过catplot来实现,以下三个方法分别是不同的kind参数:

  1. boxplot()catplot(kind="box")
  2. violinplot()catplot(kind="violin")

2.1. 箱线图:

示例代码如下:

athletes = pd.read_csv("athlete_events.csv") countries = { 'CHN':'中国', 'JPN':"日本", 'KOR':'韩国', 'USA':"美国", 'CAN':"加拿大", 'BRA':"巴西", 'GBR':"英国", 'FRA':"法国", 'ITA':"意大利", 'ETH':"埃塞俄比亚", 'KEN':"肯尼亚", 'NIG':"尼日利亚", } plt.rcParams['font.sans-serif'] = ['FangSong'] # print(plt.rcParams.keys()) need_athletes = athletes[athletes['NOC'].isin(list(countries.keys()))] g = sns.catplot(x="NOC",y="Height",data=need_athletes,kind="box",hue="Sex") g.fig.set_size_inches(20,5) g.set_xticklabels(list(countries.values()))

效果图如下:
catplot4.png

2.2. 小提琴图:

小提琴实际上就是两个对称的核密度曲线合并起来,然后中间是一个箱线图(也可以为其他图)组成的。通过小提琴图可以看出数据的分布情况。示例代码如下:

sns.catplot(x="day",y="total_bill",data=tips,kind="violin",hue="sex",split=True)

效果图如下:
catplot6.png

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

  1. box:默认的,箱线图。
  2. quartile:四分位数。上下四分位数加中位数。
    catplot13.png
  3. point:散点。
    catplot14.png
  4. stick:线条。
    catplot15.png

三、分类统计图:

分类统计图,则是根据分类,统计每个分类下的数据的个数或者比例。有以下几种方式:

  1. barplot()catplot(kind="bar")
  2. pointplot()catplot(kind="point")
  3. countplot()catplot(kind="count")

3.1. 条形图:

seaborn中的条形图具有统计功能,可以统计出比例,平均数,也可以按照你想要的统计函数来统计。示例代码如下:

  1. 统计平均数:

    # 统计星期三到星期天的消费总额的平均数 sns.catplot(x="day",y="total_bill",data=tips,kind="bar")

    catplot7.png

  2. 统计比例:

    # 统计男女中获救的比例 sns.catplot(data=titanic,kind="bar",x="sex",y="survived")

    catplot8.png

  3. 自定义统计函数:

    # 自定义统计函数,统计出每个性别下获救的人数 sns.barplot(x="sex",y="survived",data=titanic,estimator=lambda values:sum(values))

    catplot9.png

3.2. 柱状图:

柱状图是专门用来统计某个单一变量出现数量的图形。示例代码如下:

sns.catplot(x="sex",data=titanic,kind="count")

catplot10.png

也可以通过使用hue参数来指定分组:

sns.catplot(x="day",kind="count",data=tips,hue="sex")

catplot11.png

3.3. 点线图:

点线图可以非常方便的看到变量之间的趋势变化。示例代码如下:

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

效果图如下:
catplot12.png

1646人已阅读,今天你学习了吗?

添加新回复
目录