- Seaborn 教程
- Seaborn - 首页
- Seaborn - 简介
- Seaborn - 环境搭建
- 导入数据集和库
- Seaborn - 图表美化
- Seaborn - 调色板
- Seaborn - 直方图
- Seaborn - 核密度估计
- 可视化成对关系
- Seaborn - 绘制分类数据
- 观测值的分布
- Seaborn - 统计估计
- Seaborn - 绘制宽格式数据
- 多面板分类图
- Seaborn - 线性关系
- Seaborn - Facet Grid
- Seaborn - Pair Grid
- 函数参考
- Seaborn - 函数参考
- Seaborn 有用资源
- Seaborn - 快速指南
- Seaborn - 有用资源
- Seaborn - 讨论
Seaborn.heatmap() 方法
Seaborn.heatmap() 方法用于绘制矩形数据,以颜色编码矩阵的形式呈现。
让我们首先定义热力图:
热力图是一种数据可视化工具,它以颜色的形式显示某种现象的强度。色调和强度属性用于描绘绘制在热力图上的数据的变化。这些通常显示所绘制现象的性质;它是在空间上聚集还是分散。
语法
以下是 seaborn.heatmap() 方法的语法:
seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)
参数
下面讨论 heatmap() 方法的一些参数。
序号 | 参数及描述 |
---|---|
1 | 数据 它接收矩形数据集作为输入。一个可以强制转换为二维数据集的 ndarray。如果提供 Pandas DataFrame,则将使用索引和列信息标记列和行。 |
2 | Vmin, vmax 此可选参数接收浮点值作为输入,这些值用作颜色映射锚点;如果没有,则将使用数据和其他关键字参数来推断它们。 |
3 | Cmap 此可选参数接收 matplotlib 颜色或颜色列表作为输入。它执行将数据值转换为颜色空间的转换。如果未指定,则默认值取决于是否设置了 center。 |
4 | Center 接收浮点值作为输入,并确定在绘制发散数据时颜色映射的中心值。 |
5 | Mask 接收布尔数组或 DataFrame,是一个可选参数。如果传递,则在 mask 为 True 的单元格中不会显示数据。 |
6 | Robust 此可选参数接收布尔值,如果为 True 且不存在 vmin 或 vmax,则颜色映射范围使用稳健分位数而不是极值生成。 |
7 | Linewidth 接收浮点值,并确定分割每个单元格的线的宽度。 |
8 | linecolor 接收颜色作为输入,并确定分割每个单元格的线的颜色。 |
9 | cbar 接收布尔值,并确定是否应绘制颜色条。 |
返回值
此方法返回带有已绘制热力图的 axes 对象。让我们在继续开发绘图之前加载 seaborn 库和数据集。
加载 seaborn 库
要加载或导入 seaborn 库,可以使用以下代码行。
Import seaborn as sns
加载数据集
在本文中,我们将使用 seaborn 库中内置的 flights 数据集。使用以下命令加载数据集。
flights=sns.load_dataset("flights")
以下命令用于查看数据集中前 5 行。这使我们能够了解可以使用哪些变量来绘制图表。
flights.head()
以下是上述代码的输出。
index,year,passengers 0,1949,112 1,1949,118 2,1949,132 3,1949,129 4,1949,121
现在我们已经加载了数据集,我们将探索一些示例。
示例 1
在这个示例中,我们将了解如何为数组数据绘制热力图。我们首先导入 numpy 库,然后重置种子,以便每次迭代都获得相同的值,这使得绘制地图更容易。
然后,我们将设置绘图的主题,在这个示例中,主题设置为 poster。seaborn 中的 set_theme() 方法可以取 paper、notebook、talk 和 poster 值。
import numpy as np np.random.seed(0) sns.set_theme("poster") #"paper", "notebook", "talk", "poster values for set_theme
然后,我们将生成范围从 5 到 7 的随机数并将它们存储在矩阵中。此矩阵作为参数传递给 seaborn.heatmap() 方法,然后获得范围从 5 到 7 的随机数的绘图。
import seaborn as sns import matplotlib.pyplot as plt import numpy as np flights=sns.load_dataset("flights") flights.head() np.random.seed(0) sns.set_theme("poster") data = np.random.rand(5, 7) sns.heatmap(data) plt.show()
输出
生成的图表附在下面。
示例 2
现在我们已经绘制了 heatmap(),我们将了解其一些参数的工作原理。在这种情况下,我们将使用 vmin 和 vmax 参数并将它们与数据一起传递给 heatmap() 方法。
Vmin 和 Vmax 是可选参数,它们接收浮点值作为输入,这些值用作颜色映射锚点;如果没有,则将使用数据和其他关键字参数来推断它们。
代码和生成的绘图如下所示。
import seaborn as sns import matplotlib.pyplot as plt import numpy as np flights=sns.load_dataset("flights") flights.head() np.random.seed(0) sns.set_theme("poster") data = np.random.rand(5, 7) sns.heatmap(data, vmin=0, vmax=3) plt.show()
输出
示例 3
现在我们已经看到了如何从数组中绘制数据,我们将看到如何从数据集中绘制数据。在下面的示例中,我们使用 flights 数据集。
我们在这个数据集上使用 pivot 函数,以便以第一列是分类的其余列是数字的方式旋转数据集。一旦我们实现了这一点,我们将在此旋转后的数据上绘制热力图。
import seaborn as sns import matplotlib.pyplot as plt import numpy as np flights=sns.load_dataset("flights") flights.head() np.random.seed(0) sns.set_theme("poster") data = np.random.rand(5, 7) flights = flights.pivot("month", "year", "passengers") sns.heatmap(flights) plt.show()
输出
获得的绘图如下所示:
示例 4
在这个示例中,我们将在特定区域或中心创建一个热力图。为此,我们需要将值传递给 heatmap 方法的 center 参数。center 参数包含在绘制发散数据时颜色映射应居中的点。
此示例中的中心是 1995 年 1 月,生成的绘图如下所示。
import seaborn as sns import matplotlib.pyplot as plt import numpy as np flights=sns.load_dataset("flights") flights.head() np.random.seed(0) sns.set_theme("poster") data = np.random.rand(5, 7) flights = flights.pivot("month", "year", "passengers") sns.heatmap(flights, center=flights.loc["Jan", 1955]) plt.show()