python数据可视化之Seaborn(五)

写在开头:今天分享的是关于分类数据绘图的内容,学习链接同样放在后文。

前文回顾
第一节分享了Seaborn绘图的整体颜色与风格比例调控,可点击链接查看。
python数据可视化之Seaborn(一)
第二节分享了连续、分类、离散数据的绘图颜色的方法,可点击链接查看。
python数据可视化之Seaborn(二)
第三节分享了对于数据分布的绘图方法,可点击链接查看。
python数据可视化之Seaborn(三)
第四节分享了关于数据相关性的一些绘图展示,可点击链接查看。
python数据可视化之Seaborn(四)

Seaborn可视化内容安排

在Seaborn的学习中安排如下,
一、画风设置:会简单介绍一下绘图风格(一)与颜色风格(二)的设置;
二、绘图技巧:这里会介绍数据集(三)、相关数据(四)、分类数据(五)、线性关系(六)可视化的相关内容;
三、结构网络:本节主要介绍数据识别结构网络的绘图(七)。

二、Seaborn绘图技巧

分类数据

在前文的相关数据分析中展示了变量之间相关性的可视化方法,在今天我们将分享关于分类数据如何绘图进行可视化。也就是一个样本它属于不同类别的另一变量数据展示。在本文中主要使用catplot(),这个函数可以通过设置kind参数来达到与相关函数相同的绘图效果,今天主要从绘制散点图、分布图以及估计图三大类。
首先加载使用的包,

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("darkgrid")

类别散点图
catplot()函数的默认为绘制散点图,然后散点图就是去描述不同类别下数据的离散分布情况,第一种方法就是直接绘制散点图,

current_palette = sns.color_palette("Set2")
tips = sns.load_dataset("tips")
sns.catplot(x='day', y='total_bill', data=tips, palette=current_palette)

在这里插入图片描述
然后jitter参数可以将数据绘制在同一条线上,

sns.catplot(x='day', y='total_bill', data=tips, palette=current_palette, jitter=False)

在这里插入图片描述
第二种方法就是利用swarm画法,可以避免数据的重叠,使得数据更好的展现出来,同样可以用kind设置swarm进行图形绘制。同样在绘制图形是有hue、size、style三个参数对图形进行多维度类别区分绘图,并且还可使用query函数对数据集进行选择,

sns.catplot(x="size", y="total_bill", kind="swarm", palette=current_palette, 
            hue="sex", data=tips.query("size != 3"))

在这里插入图片描述
还可以通过order参数,对不同类别的数据绘制的先后顺序进行调整,自定义类别排列,

sns.catplot(x="tip", y="smoker", order=["No", "Yes"], palette=current_palette, data=tips)

在这里插入图片描述
分布数据图
在绘制分布数据图形时,主要使用的是箱线图与小提琴图,这两种图在数据初始阶段非常有用,能够观察到数据的整体分布和异常值,以及不同类别之间的比较,一般可以用boxplot()函数进行绘制,此处可以更改kind参数用catplot()绘制,

current_palette2 = sns.color_palette("Pastel2")
sns.catplot(x="day", y="total_bill", kind="box", data=tips, palette=current_palette2)

在这里插入图片描述
同样当使用hue、size和style参数时,可以对图像进行更进一步的类别划分,如果是箱线图那么将会绘制多维度箱线图,

sns.catplot(x="day", y="total_bill", kind="box", hue="smoker", data=tips, palette=current_palette2)

在这里插入图片描述
有时为了将一组箱线图绘制不同的颜色,可以将默认dodge参数关闭,然后设置hue将一组箱线图进行显色的划分,

tips["workday"] = tips["day"].isin(["Thur", "Fri"])
sns.catplot(x="day", y="total_bill", hue="workday",
            kind="box", dodge=False, data=tips, palette=current_palette2[2:4])

在这里插入图片描述
还有一种近似于箱线图的,可以将kind参数调整为boxen,这个方法比较适用于大型数据,可以看到不同大小的数据分布情况,

sns.catplot(x="size", y="total_bill", kind="boxen", data=tips.sort_values("size"), palette=current_palette2)

在这里插入图片描述
下面我们来绘制小提琴图,小提琴图是箱线图与核密度估计的结合体,核密度估计可以看前文绘图第三章的讲解,整体是箱线图的形状,上面的轮廓就是数据的核密度估计分布线,

current_palette3 = sns.color_palette("Pastel1")
sns.catplot(x="total_bill", y="day", hue="sex",
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在这里插入图片描述
同样,根据核密度的相关参数,需要对核密度函数选择窗宽或者设置cut参数来保留主要部分,

sns.catplot(x="total_bill", y="day", hue="sex", bw=.3, cut=0,
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在这里插入图片描述
当箱线图分组类别只有两个时,我们可以设置splot参数让每个类别值显示一半,并且还可以在图中显示每个个体的存在位置,

sns.catplot(x="day", y="tip", hue="smoker", bw=.3, cut=0, split=True, inner="stick",
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在这里插入图片描述
当然小提琴图在显示个体存在时,还可以结合类别散点图进行多图展示,通过ax进行图像的连接,

g = sns.catplot(x="day", y="total_bill", kind="violin", inner=None, data=tips, palette=current_palette2)
sns.swarmplot(x="day", y="total_bill", size=3, data=tips, ax=g.ax, palette=current_palette);

在这里插入图片描述
分类数据整体分布图
常常我们需要看的不是每个类别的统计分布,而是每个类别对于整体的趋势变化,为了解决这个问题我们有条形图与点图两种绘图方法来描述分类情况下的整体分布。
首先绘制条形图,条形图的绘制可以使用barplot(),也可以调整catplot()kind的参数,在这里的条形图使用boostrap的方法计算误差区间,并绘制误差棒在图上,

sns.catplot(x="sex", y="tip", hue="day", kind="bar", data=tips, palette=current_palette[3:8])

在这里插入图片描述
如果只想展示一个变量的分类统计计数情况的可视化,我们可以使用count参数值,来绘制单一变量数据统计图,

sns.catplot(x='size', kind="count", data=tips, palette="ch:.78" )

在这里插入图片描述
当然改变轴后,单一变量的累计统计也可以进行分组展示,

sns.catplot(y='size', hue="sex", kind="count", data=tips, palette="ch:.44", edgecolor=".6" )

在这里插入图片描述
下面开始第二种展示分类数据统计分布的图也就是点图,这种点图可以快速的看出不同类别数据的关系也就是整体分布以及自身的变化区间。在此之上还可以自定义标签等,可以更改线条风格以及标记点形状,

sns.catplot(x="day", y="total_bill", hue="sex", kind="point", markers=["^","o"], linestyles=["-", "--"],
            data=tips, palette=current_palette[3:8])

在这里插入图片描述
多元数据关系绘图
这里与relplot()绘图差不多,也是机遇FacetGrid方法上绘图,通过设置col或者row进行画布的分隔,

sns.catplot(x="day", y="total_bill", hue="smoker",
            col="time", row="sex", aspect=.9,
            data=tips, palette="Set1");

在这里插入图片描述
结语
今天粗略的分享了关于分类数据的绘图方法,主要有散点图、箱线图、小提琴图、柱状图以及点图,这些方法其实都有自己对应的函数,但在本文主要用集合函数继续分享。
谢谢阅读
参考
Seaborn绘图文档

发布了8 篇原创文章 · 获赞 28 · 访问量 2037

猜你喜欢

转载自blog.csdn.net/qq_35149632/article/details/104435320
今日推荐