我有两个 ndarray 数组:Mat 和 labels。 目前我正在展示 Mat:
plt.imshow(Mat, cmap='gray', vmin=0, vmax=1, interpolation='None')
labels与Mat具有相同的形状,labels[(i,j)]包含Mat[(i,j)]的标签。如何在每个像素上显示该标签?
我有两个 ndarray 数组:Mat 和 labels。 目前我正在展示 Mat:
plt.imshow(Mat, cmap='gray', vmin=0, vmax=1, interpolation='None')
labels与Mat具有相同的形状,labels[(i,j)]包含Mat[(i,j)]的标签。如何在每个像素上显示该标签?
annot=True
时,它会将数据值打印到单元格中。但是annot=
也可以是一个标签矩阵。在这种情况下,设置打印格式为字符串(fmt='s'
)非常重要。annot_kws=
可以设置其他关键字, 如字体大小或颜色。在调用heatmap()
时可以包含x
和 yticklabels
,或者使用matplotlib在之后设置。
默认着色的一个重要优点是,Seaborn 在浅色单元格上使用黑色,在深色单元格上使用白色。
以下示例使用一些utf8字符作为标签。
from matplotlib import pyplot as plt
import numpy as np
import seaborn as sns
M, N = 5, 10
mat = np.random.rand(M, N)
labels = np.random.choice(['X', '☀', '★', '♛'], size=(M, N))
ax = sns.heatmap(mat, cmap="inferno", annot=labels, annot_kws={'fontsize': 16}, fmt='s')
plt.show()
PS:文档中有一个Matplotlib示例可以创建类似的图表,而不需要使用Seaborn。它可以轻松地适应从不同矩阵中打印字符串,并且还可以添加测试以根据单元格明暗程度更改颜色。