Seaborn系列(四):类别统计绘图(categorical) 您所在的位置:网站首页 奔驰每个系列的分类图 Seaborn系列(四):类别统计绘图(categorical)

Seaborn系列(四):类别统计绘图(categorical)

2024-06-21 23:18| 来源: 网络整理| 查看: 265

Seaborn系列目录

文章目录 1. 类别统计绘图API概述2. catplot基本绘图2.1 catplot绘制分类散点图2.2 catplot绘制分类分布图2.3 catplot绘制分类估计图 3. 分类散点图3.1 strip图3.2 swarm图 4 分类分布图4.1 box图4.2 boxen图4.3 violin图 5. 分类估计图5.1 barplot5.2 pointplot5.3 countplot

在研究数值变量之间的关系时,如果其中一个主要变量是"类别",那么使用更类别统计绘图方法可能会更好。

1. 类别统计绘图API概述

seaborn中“类别”绘图函数共9个:

catplot():通过kind参数。默认为strip。 分类散点图 stripplot():散点条图swarmplot():散点群图 分类分布图 boxplot():箱型图boxenplot():增强箱型图violinplot():小提琴图 分类估计图 barplot()pointplot()countplot() catplot函数为figure级函数,其他函数为axes级函数。

figure级函数与axes级函数区别见Seaborn系列(一):绘图基础、函数分类、长短数据类型支持

2. catplot基本绘图 sns.catplot(x=None,y=None,data=None,kind="strip"):根据kind绘制分类图。

catplot同样支持legend、height、aspect等参数。hue等参数在后续详细介绍

2.1 catplot绘制分类散点图

分类散点图实际上就是把x坐标相同的数据同时绘制出来。catplot共有两种方法:

散点条图:数据按x分组,所有x相同的y值,在x坐标上方绘制散点,散点形成条状。 import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset("tips") sns.catplot(data=tips, x="day", y="total_bill", kind="strip") plt.show()

catplot1_strip

散点群图:类似散点条图,但是y值相同的点显示为树状。

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

catplot2_swarm

2.2 catplot绘制分类分布图

分类分布图包括:箱型图、增强箱型图、小提琴图。

箱型图把按x分组的数据,每一组数据分别统计中位数、25%位置数、75%位置数,以及高位和低位值。

import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset("tips") sns.catplot(data=tips, x="day", y="total_bill", kind="box") plt.show()

catplot3_box

箱图上下方的点表示超出高位和低位的数值。

增强箱型图和箱型图类似,但是绘制更多的分位数。(分位数由参数k_depth确定)

sns.catplot(data=tips, x="day", y="total_bill", kind="boxen")

catplot4_boxen

小提琴图外形像小提琴,越宽的地方表示y值密度越大,小提琴图由轮廓和内部图形组成:

轮廓是kde核密度估计曲线。内部是箱型图的四分位数。

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

catplot5_violin

2.3 catplot绘制分类估计图

如果你希望显示值的趋势估计值,可以采用分类估计图,而不是每个类别的分布。

catplot分类估计图包括:柱形图、点图

柱形图应用函数获取估计值(默认采用平均值),然后绘制成柱形图。

import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset("tips") sns.catplot(data=tips, x="day", y="total_bill", kind="bar") plt.show()

catplot6_barplot

柱形图上方的短线为置信区间,和lineplot置信区间相同,把柱形图和lineplot图重叠对比如下:

sns.catplot(data=tips, x="day", y="total_bill", kind="bar") sns.lineplot(data=tips, x="day", y="total_bill")

catplot7_barplot_lineplot

点图绘制平均值曲线和置信区间,和lineplot非常像,显示的线条和短线和lineplot也完全一致。

sns.catplot(data=tips, x="day", y="total_bill", kind="point")

catplot8_pointplot

计数图对指定x或y坐标中每个值出现的次数进行统计,绘制成柱形图。柱形高度坐标值统计个数。

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

catplot9_countplot

3. 分类散点图 3.1 strip图 stripplot():散点条图catplot(kind=“strip”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制jitter参数:设置抖动量,False表示散点条绘制在一条线上。默认为True。 sns.catplot(data=tips, x="day", y="total_bill", kind="strip", hue="sex")

stripplot1_hue

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

stripplot2_hue_dodge

sns.catplot(data=tips, x="day", y="total_bill", kind="strip", jitter=False)

stripplot3_hue_jitter1

jitter也可以用数值表示抖动量,即条形图的宽度,一般可以用0-1值。大于1的值也可以,但是就看不出每条的分界了。

linewidth, size, color等参与可以用于设置marker的样式。pallete参数可以设置hue的颜色。

3.2 swarm图 swarmplot():散点群图catplot(kind=“swarm”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制

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

swarmplot4_hue

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

swarmplot5_hue_dodge

linewidth, size, color等参与可以用于设置marker的样式。pallete参数可以设置hue的颜色。

4 分类分布图 4.1 box图 boxplot():散点群图catplot(kind=“box”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置box图方向whis参数:设置低位和高位点系数,高位、低位数公式:中位数±whis*(75%位数-25%位数) whis设置为np.inf时,低位和高位值取min和max。 sns.catplot(data=tips, x="day", y="total_bill", kind="box", hue="sex") #sns.catplot(data=tips, x="day", y="total_bill", kind="box", hue="sex", dodge=True) #dodge参数没有效果

boxplot1_hue

orient参数可以改变box图方向。但是有一种情况box会自动改变方向,可以省略orient参数。

sns.catplot(data=tips, y="day", x="total_bill", kind="box")# 省略orient="h",因为y是非数值类型分类数据

boxplot2_orient

sns.catplot(data=tips, x="day", y="total_bill", kind="box", whis=np.inf)

boxplot3_whis

4.2 boxen图 boxenplot():增强箱型图catplot(kind=“boxen”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向k_depth参数:箱形图箱数设置。 当为数字是表示具体箱形框数量。“tukey”:默认值,还可以是“proportion”, “trustworthy”, “full”,都是内置的确定方法。在 Wickham的论文中有论述

boxenplot的hue、dodge和orient参数和boxplot函数相似:

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

boxen4_hue

k_depth参数通常用默认的就ok,用proportion和full会绘制的更加详细。数值可以指定箱形框数量;

boxen5_depth4

boxen6_depth_port

4.3 violin图 violinplot():增强箱型图catplot(kind=“violin”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向split参数:当绘制两组图时,设置为True,则分别绘制半个提琴轮廓核密度估计参数:bw(带宽参数),gridsize(用于计算核密度估计值的点数)innner参数:内部数据点表示方法 None不显示内部box默认值,内部显示箱型图quartile,内部显示四分点point,内部在中心线显示所有点位置stick,内部用横线显示所有点位置

hue、dodge、orient与其他图形用法相同。split参数可以和hue结合,把2组图形分别绘制一半:

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

violinplot8_hue_split

核密度估计参数改变会导致提琴轮廓变化。提琴轮廓实际上是kde曲线。

bw是kde的参数,值越小曲线越精细,线条弯曲越多。

sns.catplot(data=tips, x="day", y="total_bill", kind="violin", bw=0.2)

violinplot7_bw

gridsize为整数。表示绘制kde的计算点数,实际上也是提琴轮廓点数,点越少,轮廓越不光滑。一般不建议自行设置。

sns.catplot(data=tips, x="sex", y="total_bill", kind="violin",inner=None) sns.catplot(data=tips, x="sex", y="total_bill", kind="violin",inner="box") sns.catplot(data=tips, x="sex", y="total_bill", kind="violin",inner="quartile") sns.catplot(data=tips, x="sex", y="total_bill", kind="violin",inner="point") sns.catplot(data=tips, x="sex", y="total_bill", kind="violin",inner="stick")

violinplot9_inner

5. 分类估计图 5.1 barplot barplot():柱形图catplot(kind=“bar”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向errwidth参数:误差线宽度capsize参数:误差线端部大小ci参数:误差线置信区间0—100estimator参数:估计函数,也就是计算柱形图高度值的参数。

hue、dodge和orient参数与其他函数相同。

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

barplot1_hue_dodge

errwidth、capsize和ci参数是针对柱形图顶部误差线的:

sns.catplot(data=tips, x="day", y="total_bill", kind="bar", capsize=0.3, errwidth=5, ci=50)

barplot1_err

默认柱形图高度为平均值,estimator参数可以设置确定柱形图高度的函数。

sns.catplot(data=tips, x="day", y="total_bill", kind="bar", estimator=max)

barplot3_estimator

5.2 pointplot pointplot():柱形图catplot(kind=“point”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向errwidth参数:误差线宽度capsize参数:误差线端部大小ci参数:误差线置信区间0—100estimator参数:估计函数,也就是计算柱形图高度值的参数。join参数:是否绘制折线,False就只绘制误差线。

hue、dodge、orient、errwidth、capsize、ci、estimator参数与barplot相同。

sns.catplot(data=tips, x="day", y="total_bill", kind="point") sns.catplot(data=tips, x="day", y="total_bill", kind="point", join=False)

pointplot4_join

5.3 countplot pointplot():柱形图catplot(kind=“point”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向 sns.catplot(data=tips, x="day", kind="count", hue="sex")

countplot5

palette, facecolor, linewidth, edgecolor等matplotlib基本样式设置参数也同样适用于以上函数。 height, aspect等参数同样适用。

Seaborn系列目录

个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。

修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap

未经允许请勿转载。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有