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()
输出
获得的图表附在下面。
示例 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()
输出
the plot obtained is as follows,
示例 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()