Matplotlib 在plt.imshow上添加文本

Matplotlib 在plt.imshow上添加文本,matplotlib,imshow,Matplotlib,Imshow,我有两个时间表:垫子,标签 目前,我显示了: plt.imshow(Mat, cmap='gray', vmin=0, vmax=1, interpolation='None') 标签的形状与Mat相同,标签[(i,j)]包含Mat[(i,j)]的标签。 如何在每个像素上显示标签?最简单的方法是使用Seaborn的标签。当annot=True时会将数据值打印到单元格中。但是annot=也可以是标签矩阵。在这种情况下,重要的是将打印格式设置为字符串(fmt='s')annot_kws=可以设置其

我有两个时间表:垫子,标签 目前,我显示了:

plt.imshow(Mat, cmap='gray', vmin=0, vmax=1, interpolation='None')
标签的形状与Mat相同,标签[(i,j)]包含Mat[(i,j)]的标签。
如何在每个像素上显示标签?

最简单的方法是使用Seaborn的标签。当
annot=True时
会将数据值打印到单元格中。但是
annot=
也可以是标签矩阵。在这种情况下,重要的是将打印格式设置为字符串(
fmt='s'
annot_kws=
可以设置其他关键字,如fontsize或color
x
yticklabels
可以合并到对
heatmap()
的调用中,或者在调用后使用matplotlib进行设置

默认着色的一个重要优点是,Sorn在浅色单元格上使用黑色,在深色单元格上使用白色

下面是一个使用一些utf8字符作为标签的示例

从matplotlib导入pyplot作为plt
将numpy作为np导入
导入seaborn作为sns
M、 N=5,10
mat=np.rand.rand(M,N)
labels=np.random.choice(['X','☀', '★', '♛'], 尺寸=(M,N))
ax=sns.heatmap(mat,cmap=“inferno”,annot=labels,annot_kws={'fontsize':16},fmt='s')
plt.show()


PS:文档中有一种方法可以在没有Seaborn的情况下创建类似的东西。它可以很容易地调整以打印来自不同矩阵的字符串,还可以添加一个测试来根据单元格的黑暗度改变颜色。

最简单的方法是使用Seaborn方法。当
annot=True
时,它会将数据值打印到单元格中。但是
annot=
也可以是标签矩阵。在这种情况下,将打印格式设置为string(
fmt='s'
)很重要。
annot\u kws=
可以设置其他关键字,例如fontsize或color。
x
yticklebels
可以合并到对
热图()的调用中
,或随后使用matplotlib进行设置

默认着色的一个重要优点是,Sorn在浅色单元格上使用黑色,在深色单元格上使用白色

下面是一个使用一些utf8字符作为标签的示例

从matplotlib导入pyplot作为plt
将numpy作为np导入
导入seaborn作为sns
M、 N=5,10
mat=np.rand.rand(M,N)
labels=np.random.choice(['X','☀', '★', '♛'], 尺寸=(M,N))
ax=sns.heatmap(mat,cmap=“inferno”,annot=labels,annot_kws={'fontsize':16},fmt='s')
plt.show()

PS:在文档中有一种方法可以在没有Seaborn的情况下创建类似的东西。它可以很容易地适应打印来自不同矩阵的字符串,还可以添加一个测试来根据单元格的黑暗度改变颜色