matplotlib是python最常见的绘图包,强大之处不言而喻。然而在数据科学领域,可视化库-Seaborn也是重量级的存在。
由于matplotlib比较底层,想要绘制漂亮的图非常麻烦,需要写大量的代码。
Seaborn是在matplotlib基础上进行了高级API封装,图表装饰更加容易,你可以用更少的代码做出更美观的图。同时,Seaborn高度兼容了numy、pandas、scipy等库,使得数据可视化更加方便快捷。
话不多说,先来展示一下Seaborn的风采:
带边际分布的Hexbin图
下面正式开始讲解如何使用Seaborn绘图
Seaborn让coder专注于可视化分析,提供更多高级接口,无需将过多时间用于数据处理和图表装饰,一般而言,它主要有以下功能:
安装最新版本的Seaborn非常简单,使用pip命令即可:
pip install seaborn
Python版本:3.6.x
Seaborn的依赖库有:numpy、scipy、matplotlib、pandas
导入Seaborn库,一般使用:
import seaborn as sns
查看Seaborn版本:
sns.__version__
# 本文使用最新版本:0.9.0
Seaborn装载了一些默认主题风格,通过sns.set()方法实现。
sns.set()可以设置5种风格的图表背景:darkgrid, whitegrid, dark, white, ticks,通过参数style设置,默认情况下为darkgrid风格:
更改为whitegrid风格:
你还可以通过改变参数palette来调整颜色:
提示:有人会问上面的代码从哪加载数据集?是这样的,Seaborn会内置一些数据集,通过load_data()方法加载大家有兴趣可以去官方教程看看有哪些内置数据集本文都会用Seaborn内置数据集讲解案例 。
relplot()是seaborn中非常重要的绘图函数,它可以用于绘制散点图和线图,通过参数kind改变绘图类型。
注:默认情况下为散点图
举个例子:
上面加载了内置数据集-tips(小费数据集),并对total_bill和tip字段绘制散点分布图。
tips数据集:
tips数据集字段说明:
前面绘制了total_bill(总消费)和tip(小费)的散点关系图,我们可以清晰地看到这两者成正相关性。
如果在上面的基础上再区分时间,显示这次消费属于一周的周几,并用不同颜色标记点传递参数 hue='day':
性别不同会对这个分布关系产生影响,我们绘制男、女两张图表传递参数 col='sex':
性别不同、用餐类型也不同的情况下,分布是什么样的,可以绘制多张图表传递参数 col='sex',row='time':
你也可以绘制线图,只需要传递参数kind='line':
lineplot()和scatter()分别用于绘制线图和散点图,前面说过relplot()函数已经覆盖这两个绘图功能,所以就不赘述了,有意者可以自研。
lmplot()函数用以绘制回归模型,描述线性关系。
依然以小费数据集为例:
这是一个散点图+线性回归+95%置性区间的组合图
你调整置性区间的大小,传递参数ci:60:
对smoker(是否吸烟)做分类处理,得到两个不同的回归曲线,传递参数 hue='smoker' :
绘制非参数回归模型(局部加权线性回归),传递参数 lowess=True:
当有一维数据是分类数据时,散点图成了条带形状,这里就用到stripplot()函数。
箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。
它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。
箱线图的绘制方法是:
小提琴图结合了箱型图和密度图的特征,用于展示数据的分布形状。粗黑线表示四分数范围,延伸的细线表示95%的置信区间,白点为中位数。
小提琴图弥补了箱型图的不足,可以展示数据分布是双模还是多模。
本介绍了Seaborn安装、风格配置以及各类绘图函数的使用,当然这里只是列举了小部分函数和功能,抛砖引玉,为展示seaborn的强大之处。希望Seaborn能成为大家数据科学路上的得力助手!