Seaborn 是什么?
虽然 Matplotlib 非常强大,但它本身提供的 API 并不是很好用。在实际工作中,我们首选还是使用 Seaborn 来实现数据可视化。

Seaborn 是基于 Matplotlib 来实现的,但相比于 Matplotlib,Seaborn 有 2 个最重要的优势:① 语法更加简单好用;② 图表更加高级美观。就拿语法来说,绘制一个图表,Seaborn 大多数只需要几行代码就可以轻松实现了,而使用 Matplotlib 则可能需要十几行。
此外 Matplotlib 绘制出的图表是比较简陋的,而 Seaborn 绘制出来的图表却是非常的 “高大上”。实际上,绘制一个有吸引力的图表是非常重要的,毕竟用户体验才是最重要的。小伙伴们可以看一下图 1 和图 2 所示,感性对比一下就知道了。


对于 Seaborn 来说,有以下 4 点是需要特别清楚的。了解这几点,对于我们后续的学习也非常重要。
- 在实际工作中,我们应该首选 Seaborn 来实现数据可视化。如果 Seaborn 实现不了,再去考虑使用 Matplotlib。
- Seaborn 是基于 Matplotlib 实现的,所以很多方法有相似之处。我们在学习的时候,应该多多对比理解。
- Seaborn 只提供最常用图表的绘制函数,对于其他不常用的图表并没有提供绘制函数(比如雷达图、棉棒图等),不过这已经能够满足大多数开发需求了。
- Seaborn 与 Pandas 的结合非常紧密,虽然它也支持列表或数组,但我们强烈建议使用 Pandas DataFrame。这是因为 Seaborn 可以自动从 DataFrame 中提取列名作为图表的标签,极大简化代码。
注意: 想要学习 Seaborn,小伙伴们必须要有 NumPy、Pandas 以及 Matplotlib 基础才行,可以先学习绿叶网提供的以下精品教程。
- NumPy 教程。
- Pandas 教程(未来上线)。
- Matplotlib 教程。
Seaborn 的使用
由于 Seaborn 是第三方库,所以我们需要手动安装才能使用。在终端窗口中,输入下面命令,然后按下 Enter 键就可以自动安装了。
pip install seaborn由于 Seaborn 是基于 Matplotlib 实现的,所以在使用 Seaborn 之前必须引入 matplotlib 这个库才行。此外,Seaborn 都是结合 Pandas 一起使用的,所以我们也要引入 Pandas 库。
语法:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns说明:
对于 Seaborn 来说,它只为我们提供最常用图表的绘制函数,如下表所示。
| 基础图表 | |
| lineplot() | 折线图 |
| scatterplot() | 散点图 |
| barplot() | 柱形图 |
| histplot() | 直方图 |
| boxplot() | 箱线图 |
| 高级图表 | |
| heatmap() | 热力图 |
| kdeplot() | 核密度图 |
| violinplot() | 小提琴图 |
| boxenplot() | 增强箱线图 |
| stripplot() | 分布散点图 |
| regplot() | 线性回归图 |
| 其他图表 | |
| catplot() | 图表分组 |
| jointplot() | 双变量图 |
| pairplot() | 多变量图 |
| relplot() | 关系图 |
| displot() | 分布图 |
因为 Matplotlib 提供的饼状图函数足够非常好用了,所以 Seaborn 并没有提供专门绘制饼状图的函数。此外,统计可视化界普遍认为饼图不是一种优秀的图表(难以比较面积大小),因此 Seaborn 作者更推崇条形图等。
总而言之一句话:能使用 Seaborn 实现的,就不使用 Matplotlib。如果使用 Seaborn 实现不了,再考虑使用 Matplotlib。
需要说明的是,Seaborn 中的绘图函数提供的参数非常多,不过我们只会介绍最常用的。对于其他不常用的参数,小伙伴们可以参考一下 Seaborn 官方文档。
Seaborn 常见问题
1. 使用 import 导入 Seaborn 时,为什么简称为 sns?这个 sns 是怎么来的呢?
之所以将 Seaborn 简称为 sns,其实这里是有一个 “梗” 的。在美剧 The West Wing 中,有一人物的名字叫做 Samuel Norman Seaborn,他名字的首字母就是 sns。然后 Seaborn 官方为了避免与其他库冲突,所以就干脆使用这个比较特殊的 “sns” 作为 Seaborn 的简称了。
