seaborn 热图上的注释作为符号

问题描述 投票:0回答:1

我想要热图注释作为符号。 '*' 在 1 的位置和空白在 0.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

x = pd.DataFrame({'a':[1,0,1,0]})
fig, (ax) = plt.subplots(ncols=1)
sns.heatmap(x, cmap="BuPu",annot=True,fmt='g',annot_kws={'size':10},ax=ax, yticklabels=[], cbar=False, linewidths=.5,robust=True, vmin=0, vmax=1)
plt.show()
python matplotlib seaborn heatmap
1个回答
4
投票

热图只能用数字标注。要放置其他文本(或 unicode 符号),可以使用

ax.text
。每个单元格的中心都在 0.5 添加到行号和列号。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

x = pd.DataFrame({'a': [1, 0, 1, 0], 'b': [1, 1, 0, 1], 'c': [0, 1, 0, 0]})
fig, (ax) = plt.subplots(ncols=1)
sns.heatmap(x, cmap="BuPu", annot=False, ax=ax, yticklabels=[], cbar=False, linewidths=.5)

for i, c in enumerate(x.columns):
    for j, v in enumerate(x[c]):
        if v == 1:
            ax.text(i + 0.5, j + 0.5, '★', color='gold', size=20, ha='center', va='center')
plt.show()

© www.soinside.com 2019 - 2024. All rights reserved.