我有两个 ndarray:Mat、标签 目前我显示 Mat:
plt.imshow(Mat, cmap='gray', vmin=0, vmax=1, interpolation='None')
Run Code Online (Sandbox Code Playgroud)
labels 与 Mat 具有相同的形状,并且 labels[(i,j)] 包含 Mat[(i,j)] 的标签。如何在每个像素上显示标签?
最简单的方法是使用 Seaborn 的热图。当annot=True
它将数据值打印到单元格中时。但annot=
也可以是标签矩阵。在这种情况下,将打印格式设置为字符串 ( ) 很重要fmt=\'s\'
。annot_kws=
可以设置其他关键字,例如字体大小或颜色。x
并且yticklabels
可以合并到对 的调用中heatmap()
,或者随后使用 matplotlib 设置。
默认颜色的一个重要好处是,Sorn 在浅色单元上使用黑色,在深色单元上使用白色。
\n下面是一个使用一些 utf8 字符作为标签的示例。
\nfrom matplotlib import pyplot as plt\nimport numpy as np\nimport seaborn as sns\n\nM, N = 5, 10\nmat = np.random.rand(M, N)\nlabels = np.random.choice([\'X\', \'\xe2\x98\x80\', \'\xe2\x98\x85\', \'\xe2\x99\x9b\'], size=(M, N))\nax = sns.heatmap(mat, cmap="inferno", annot=labels, annot_kws={\'fontsize\': 16}, fmt=\'s\')\nplt.show()\n
Run Code Online (Sandbox Code Playgroud)\n\nPS:文档中有一个matplotlib 示例,可以在不使用 Seaborn 的情况下创建类似的东西。它可以轻松地适应从不同矩阵打印字符串,并且还可以添加测试以根据单元黑暗度改变颜色。
\n 归档时间: |
|
查看次数: |
5728 次 |
最近记录: |