使用 seaborn 进行数据可视化
seaborn 简介
上一篇文章介绍了使用 matplotlib 进行数据可视化
seaborn 是一种基于matplotlib的图形可视化python libraty。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。
seaborn 其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用 seaborn 就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把 seaborn 视为 matplotlib 的补充,而不是替代物。同时它能高度兼容 numpy 与 pandas 数据结构以及 scipy 与 statsmodels 等统计模式。掌握 seaborn 能很大程度帮助我们更高效的观察数据与图表,并且更加深入了解它们。
其有如下特点:
- 计算多变量间关系的面向数据集接口
- 可视化类别变量的观测与统计
- 可视化单变量或多变量分布并与其子数据集比较
- 控制线性回归的不同因变量并进行参数估计与作图
- 对复杂数据进行易行的整体结构可视化
- 对多表统计图的制作高度抽象并简化可视化过程
- 提供多个内建主题渲染 matplotlib 的图像样式
- 提供调色板工具生动再现数据
seaborn 框架旨在以数据可视化为中心来挖掘与理解数据。它提供的面向数据集制图函数主要是对行列索引和数组的操作,包含对整个数据集进行内部的语义映射与统计整合,以此生成富于信息的图表。
布局风格
import seaborn as sns
sns.set()
设置画图空间为 seaborn 默认风格。
seaborn默认的灰色网格底色灵感来源于 matplotlib 却更加柔和。大多数情况下,图应优于表。seaborn 的默认灰色网格底色避免了刺目的干扰,对于多个方面的图形尤其有用,是一些更复杂的工具的核心。
样式控制:axes_style() and set_style()
sns.set_style( strStyle )
设置画图空间为指定风格,分别有:
- darkgrid 黑色网格(默认)
- whitegrid 白色网格
- dark 黑色背景
- white 白色背景
- ticks 四周都有刻度线的白背景
with sns.axed_style( strStyle ) :
临时设定图形样式,此背景风格设置只对冒号后对应缩进内画的图有效,其他区域不变。
边框控制:despine()
sns.despine(fig=None, ax=None, top=True, right=True, left=False, bottom=False, offset=None, trim=False)
参数 top, bottom, left, right: True表示删除该边框,False表示保留。默认情况下使用 despine 方法删除上方和右方边框。
参数offset: 设置图与轴线的距离。
white 和 ticks 参数的样式,都可以删除上方和右方坐标轴上不需要的边框,这在 matplotlib 中是无法通过参数实现的,却可以在 seaborn 中通过 despine() 函数轻松移除他们。
绘图元素:plotting_context() 和 set_context()
sns.set_context( strContext, rc )
设置绘图元素的规模,按相对尺寸的顺序(线条越来越粗),分别有:
- paper
- notebook (默认)
- talk
- poster
with sns.plotting_context( strContext ) :
临时设定绘图元素的规模,此设置只对冒号后对应缩进内画的图有效,其他区域不变。
绘图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
可视化统计关系 relplot
统计分析是了解数据集中的变量如何相互关联以及这些关系如何依赖于其他变量的过程。可视化是此过程的核心组件,这是因为当数据被恰当地可视化时,人的视觉系统可以看到指示关系的趋势和模式。
relplot(kind=‘scatter’) 将 FacetGrid() 与 scatterplot() 和 lineplot() 组合在一起。
散点图
参数hue: 色调语义,对点进行着色来将另一个维度添加到绘图中。
参数style: 标记样式,为了强调类别之间的差异并提高可访问性。
参数size: 改变每个点的大小。
tips = sns.load_dataset("tips")
sns.relplot