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() 方法的一些参数。

S.No 参数及说明
1 Data

它以矩形数据集作为输入。 可以强制转换为二维数据集的 ndarray。 如果提供了 Pandas DataFrame,列和行将使用索引和列信息进行标记。

2 Vmin, vmax

这个可选参数将浮点值作为输入,这些值用作颜色图锚点; 如果不是,将使用数据和其他关键字参数来推断它们。

3 Cmap

此可选参数将 matplotlib 颜色或颜色列表作为输入。 它执行数据值到颜色空间的转换。 默认值(如果未指定)将取决于是否设置了中心。

4 Center

将浮点值作为输入并确定绘制发散数据时颜色图居中的值。

5 Mask

采用 bool 数组或 DataFrame 并且是可选参数。 如果通过,数据将不会显示在 mask 为 True 的单元格中。

6 Robust

此可选参数采用布尔值,如果不存在 True 和 vmin 或 vmax,则使用稳健的分位数而不是极值生成颜色图范围。

7 Linewidth

采用浮动值并确定分隔每个单元格的线条的宽度。

8 linecolor

将颜色作为输入并确定分隔每个单元格的线条的颜色。

9 cbar

采用布尔值并确定是否应绘制颜色条。


返回值

此方法返回绘制了热图的坐标区对象。 在继续开发绘图之前,让我们加载 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 库,然后重置种子以便每次迭代都获得相同的值,这使得绘制地图变得更加容易。

然后我们将设置情节的主题,在这个例子中主题设置为海报。 seaborn 中的 set_theme() 方法可以取 values、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()

输出

获得的图表附在下面。

seaborn heatmap 热图方法

示例 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()

输出

heatmap 热图方法

示例 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()

输出

the plot obtained is as follows,

heatmap

示例 4

在此示例中,我们将在特定区域或中心创建热图。 为此,我们需要将值传递给热图方法的中心参数。 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()

输出

seaborn heatmap

❮Seaborn 矩阵图简介