Python 如何使用Seaborn为热力图的单元格注释添加文本
热力图在识别数据中的模式和趋势方面非常有用,并且可以通过在单元格中添加注释(如文本标签或数值)来进一步自定义,为数据提供额外的信息。在本文中,我们将讨论如何使用Seaborn在Python中为热力图的单元格注释添加文本。我们将探索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 | 用于将二维数据集转换为ndarray。如果提供了使用pandas的DataFrame对象,则列数据可用于指定行和列。 |
2. | vamx和vmin | 提供用作颜色映射的起始值。如果未提供这些值,将从数据和其他关键字参数推断出这些值。 |
3. | cmap | 定义将数据值映射到颜色空间的方式。如果未指定默认值,将取决于是否设置了center参数。 |
4. | center | 在绘制不同数据集时,此值为颜色映射的中心值。如果未提供其他参数,则此参数将更改默认的cmap值。 |
5. | annot | 如果annot参数的值为true,则将数据写入每个热力图单元格。 |
6. | annot_kws | 仅当annot参数的值为true时,定义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来在热力图的单元格注释中添加文本。