如何在 Python 中使用 seaborn 在热力图单元格注释中添加文本?
热力图可用于识别数据中的模式和趋势,并且可以通过向单元格添加注释(例如文本标签或数值)来进一步自定义,这些注释可以提供有关数据的更多信息。在本文中,我们将讨论如何在 Python 中使用 Seaborn 在热力图单元格注释中添加文本。我们将探讨 Seaborn 中可用于自定义文本注释的不同方法和选项,例如更改文本的字体大小、颜色和格式。
热力图
热力图是一种数据可视化,其中现象的强度在二维图形上用不同的颜色表示。颜色可以变化色调或饱和度,以向读者展示现象在时间和地点上的聚类或变化位置。热力图主要分为两类:聚类热力图和空间热力图。
聚类热力图在固定大小的单元格矩阵中组织幅度,其中现象和类别显示为行和列。聚类的目的是通过统计研究来暗示或显示,因此行和列的排序是经过深思熟虑的,并且有些随机性。单元格的尺寸完全是随机的,但足够大以保证易读性。空间热力图中没有单元格的概念,并且现象被视为持续变化的,因此幅度的位置由其在该空间中的位置决定。
Seaborn
Seaborn 是一个 Python 包,用于根据数据创建图表和图形。它使用 matplotlib 作为其基础,并且与 pandas 库配合使用良好。
Seaborn 有助于数据发现、可视化和理解。通过使用绘图方法处理和可视化包含完整数据集的数据帧和数组,这些方法随后执行必要的语义映射和统计聚合,以生成有见地的图形。借助其声明性的、以数据集为中心的 API,您可以专注于图形组件的含义,而不是渲染它们的细节。
使用 seaborn 创建热力图的语法
sns.heatmap(dt, *, vmin=None, vmax=None, cmap=None, center=None, annot_kws=None, linewidths=0, linecolor=’white’, cbar=True, **kwargs)
解释
序号 |
属性 |
定义 |
---|---|---|
1. |
dt |
它用于将 2D 数据集转换为 ndarray。如果提供了使用 pandas 的 DataFrame,则列数据可用于指定行和列。 |
2. |
vamx 和 vmin |
它们提供要作为颜色图起点使用的值。如果未给出,则这些值将从数据和其他关键字参数推断得出。 |
3. |
cmap |
它定义了数据值映射到颜色空间的方式。如果您不提供默认值,它将取决于中心是否设置。 |
4. |
center |
在绘制不同数据集时,这是要将颜色图居中的值。如果没有给出其他参数,则此参数将更改默认的 cmap。 |
5. |
annot |
如果 annot 参数的值为真,则在每个热力图单元格中写入数据。 |
6. |
annot_kws |
仅当 annot 参数的值为真时,它才定义函数 matplotlib.axes.Axes.text() 的参数。 |
7. |
linewidhts |
此参数定义将划分每个单元格的特定线的宽度。 |
8. |
linecolor |
此参数定义将划分每个单元格的特定线的颜色。 |
9. |
cbar |
它定义了我们是否需要绘制颜色条。 |
在热力图单元格注释中添加文本
可以对热力图的行和列进行注释以提供额外的上下文。annot 选项通常设置为 True 以在热力图顶部显示数据值。
Annot 和 fmt 参数
Annot − sns.heatmap() 的 annot(注释)功能允许您显示与 Python seaborn 热力图中每个单元格关联的数值。我们可以显示所选单元格的原始数字,或者根据您的指示传递不同的数字。将 True 传递给 annot 会导致该值显示在每个热力图单元格中。
Fmt − annot 参数仅允许向 Python 热力图单元格添加数值,而 fmt 参数允许添加字符串(文本)值。
这里,创建了一个包含字符串值的 2D numpy 数组并将其传递给 annot。此外,将字符串值“s”传递给 fmt。
示例
import numpy as n import matplotlib.pyplot as p import seaborn as s # creating random data using numpy df = n.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]]) # creating text array using numpy tx = n.array([['Amy', 'Bryn', 'Calis', 'Daisy', 'Eagel'], ['Fin', 'Garry', 'Hary', 'Ingleis', 'Jack'], ['Kim', 'Lasy', 'Mia', 'Nia', 'Olivia']]) # creating subplot figure, axx = p.subplots() # defining heatmap on current axes using seaborn axx = s.heatmap(df, annot=tx, fmt="")
输出
结论
在本文中,我们了解到热力图在二维图形中向我们展示了现象的幅度,并且可以用于数据可视化。我们已经了解了如何使用 Python 的库 Seaborn 来定义热力图、其语法以及定义热力图的参数。最后,我们已经了解了如何声明属性 annot 和 fmt,通过它们我们可以在热力图单元格注释中添加文本。