发布时间:2026-07-25阅读(0)
在python数据可视化(五)seaborn散点图(分布散点、分簇散点图)中我们绘制了分布散点图和分簇散点图来查看两个变量的对应数据分布,本节内容我们接着上篇文章的数据绘制箱型图和小提琴图,至于箱型图我在matplotlib中详细介绍了箱型图的特性,这里在稍微啰嗦一下,箱型图主要是来观察离群点数据的。
seaborn.boxplot()这个函数主要是绘制出一个箱型图来反映离群点数据。首先我们还是先来了解下使用的数据tips结构:
#导入依赖包%matplotlib inlineimport matplotlib.pyplot as pltimport seaborn as snssns.set(style="whitegrid", color_codes=True)tips = sns.load_dataset("tips")

数据预览
total_bill是消费总金额,tip是小费,size指用餐人数。boxplot()中数据参数有x和y,我们将消费数据依次传给x和y看看绘图效果:
sns.boxplot(x=tip,data=tips)

x=tip
sns.boxplot(y=tip,data=tips)

y=tip
sns.boxplot(y=tip,x=day,data=tips)

x=day,y=tip
通过对比上面3幅图,我们很容易发现,boxplot()这个函数x,y两个参数的含义,一个参数是观察的连续变量数据,另一个参数是这个变量的分类属性,比如图3就很好的展示了不同星期中,小费数据的离群情况,其中周六离群点数据最多。同分布散点图和分簇散点图一样,boxplot()这个函数也有hue参数,我们可以设置hue参数来绘制第二个分类数据,如下:
sns.boxplot(y=tip,x=day,hue=sex,data=tips)

根据性别分别绘制不同日期下的小费箱型图
上面这个图就很清晰的反映了不同星期不同性别的客户付小费数据的分布,可以看到周六男性客户出手大方,离群点数据较多。之前我们在介绍seaborn库的时候说过,seaborn库中的很多绘图方法就是提前给你画好模板,我们只需要把数据传进去就得到相应的图形,基于此,我没是否可以在同一个模板上同时绘制分簇图和箱型图呢?请看代码:
sns.boxplot(x="day", y="total_bill", data=tips)sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")

组合图形(分簇和箱型图)
seaborn.violinplot()这个函数绘制出箱型图和核密度估计结合的图形,核密度估计我们在后面的内容中详细讲,这里大家对比直方图理解,直方图的概率密度曲线不连续,而核密度函数曲线是连续的,由于这个函数绘制出的图形像个小提琴,因此我们也称为绘制小提琴图。我们将数据传入,如下:
sns.violinplot(y=tip,x=day,data=tips)

不同星期数据对应小提琴图
从图中可以看到,小提琴图即反映了数据的离群情况,同时也反映了数据的分布密度。此函数跟箱型图一样,也有hue参数,可以查看第二个分类属性下的数据分布,如下:
sns.violinplot(y=tip,x=day,hue=sex,data=tips)

hue=sex
可以看到,上面的小提琴图是4对8个,即当设置hue参数为sex时,每个小提琴的数据集是一类数据,那有没有办法让男性对应数据和女性对应数据都作为一个数据集绘制出一个小提琴图,只是在一个图中区分男性数据和女性数据呢?答案是肯定的,violinplot()函数提供了一个split参数,可以做到以上需求,如下:
sns.violinplot(y=tip,x=day,hue=sex,data=tips,split=True)

split=True
除此以外,我们再来看一下inner参数,上面的小提琴图中内部都是箱型图,通过inner参数,我们可以设置其他类型,inner可选参数有:box、quartile(四分位)、point、stick。我们依次看下:
sns.violinplot(y=tip,x=day,hue=sex,data=tips,split=True,inner="box")sns.violinplot(y=tip,x=day,hue=sex,data=tips,split=True,inner="quartile")sns.violinplot(y=tip,x=day,hue=sex,data=tips,split=True,inner="point")sns.violinplot(y=tip,x=day,hue=sex,data=tips,split=True,inner="stick")

inner=box

inner=point

inner=quartile

inner=stick
以上就是这两个绘图函数的常用用法,通过上面的一系列操作,大家可以发现seaborn绘图非常简单,我们只需要将数据传入相应的绘图函数即可,后面两个小节内容我们将会用热度图函数绘制詹姆斯、杜兰特、伦纳德等球员的投篮热度图,欢迎关注!
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图