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

输出

生成的图表附在下面。

seaborn heatmap method

示例 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 method

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

输出

获得的绘图如下所示:

heatmap

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

输出

seaborn heatmap
seaborn_matrix_plots_introduction.htm
广告