如何使用函数"sns.heatmap"的参数"annot_kws"修改注释文字?

How to use the parameter "annot_kws" of the function "sns.heatmap" to revise the annotaion text?

如何使用“seaborn.heatmap”函数绘制这样的热图? 颜色深浅由矩阵 A 确定,每个网格的注释由矩阵 B 确定。 例如,如果我得到一个矩阵,我希望它的颜色根据这个矩阵的 z-score 显示,但注释仍然是矩阵本身。 我知道我应该求助于参数 'annot_kws',但我应该如何编写代码?

不是简单地设置annot=True,而是可以将annot=设置为与数据具有相同行数和列数的数据帧(或二维numpy数组,或列表列表)。这样,将使用 data 应用着色,并且注释将来自 annot。 Seaborn 仍会注意为深色单元格使用白色文本,为浅色单元格使用黑色文本。

annot_kws=用于改变text properties,通常是字体大小。但您也可以更改字体本身,或者如果您使用的是多行文本,则可以更改对齐方式。

这里是一个使用数字 1 到 36 作为注释的示例,但数字对 10 取模用于着色。 annot_kws 用于放大和旋转文本。 (注解为字符串时,还需要设置格式,如fmt='')。

import seaborn as sns
import numpy as np

a = pd.DataFrame({'count': [1, 2, 3]})

matrix_B = np.arange(1, 37).reshape(6, 6)  # used for annotations
matrix_A = (matrix_B % 10)  # used for coloring
sns.heatmap(data=matrix_A, annot=matrix_B,
            annot_kws={'size': 20, 'rotation': 45},
            square=True, cbar_kws={'label': 'last digit'})