Seaborn系列(四):类别统计绘图(categorical) | 您所在的位置:网站首页 › 奔驰每个系列的分类图 › Seaborn系列(四):类别统计绘图(categorical) |
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() 散点群图:类似散点条图,但是y值相同的点显示为树状。sns.catplot(data=tips, x="day", y="total_bill", kind="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()箱图上下方的点表示超出高位和低位的数值。 增强箱型图和箱型图类似,但是绘制更多的分位数。(分位数由参数k_depth确定) sns.catplot(data=tips, x="day", y="total_bill", kind="boxen") 小提琴图外形像小提琴,越宽的地方表示y值密度越大,小提琴图由轮廓和内部图形组成: 轮廓是kde核密度估计曲线。内部是箱型图的四分位数。sns.catplot(data=tips, x="day", y="total_bill", kind="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()柱形图上方的短线为置信区间,和lineplot置信区间相同,把柱形图和lineplot图重叠对比如下: sns.catplot(data=tips, x="day", y="total_bill", kind="bar") sns.lineplot(data=tips, x="day", y="total_bill")点图绘制平均值曲线和置信区间,和lineplot非常像,显示的线条和短线和lineplot也完全一致。 sns.catplot(data=tips, x="day", y="total_bill", kind="point")计数图对指定x或y坐标中每个值出现的次数进行统计,绘制成柱形图。柱形高度坐标值统计个数。 sns.catplot(data=tips, x="day", kind="count") 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") sns.catplot(data=tips, x="day", y="total_bill", kind="strip", hue="sex", dodge=True) sns.catplot(data=tips, x="day", y="total_bill", kind="strip", jitter=False)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") sns.catplot(data=tips, x="day", y="total_bill", kind="swarm", hue="sex", dodge=True) 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参数没有效果orient参数可以改变box图方向。但是有一种情况box会自动改变方向,可以省略orient参数。 sns.catplot(data=tips, y="day", x="total_bill", kind="box")# 省略orient="h",因为y是非数值类型分类数据 sns.catplot(data=tips, x="day", y="total_bill", kind="box", whis=np.inf) 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)k_depth参数通常用默认的就ok,用proportion和full会绘制的更加详细。数值可以指定箱形框数量; 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)核密度估计参数改变会导致提琴轮廓变化。提琴轮廓实际上是kde曲线。 bw是kde的参数,值越小曲线越精细,线条弯曲越多。 sns.catplot(data=tips, x="day", y="total_bill", kind="violin", bw=0.2)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") 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)errwidth、capsize和ci参数是针对柱形图顶部误差线的: sns.catplot(data=tips, x="day", y="total_bill", kind="bar", capsize=0.3, errwidth=5, ci=50)默认柱形图高度为平均值,estimator参数可以设置确定柱形图高度的函数。 sns.catplot(data=tips, x="day", y="total_bill", kind="bar", estimator=max) 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) 5.3 countplot pointplot():柱形图catplot(kind=“point”) hue参数:分组按不同颜色绘图dodge参数:是否将不同的组分开绘制orient参数:“v”|“h”,设置boxen图方向 sns.catplot(data=tips, x="day", kind="count", hue="sex")palette, facecolor, linewidth, edgecolor等matplotlib基本样式设置参数也同样适用于以上函数。 height, aspect等参数同样适用。 Seaborn系列目录 个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。 修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap 未经允许请勿转载。 |
CopyRight 2018-2019 实验室设备网 版权所有 |