python аннотация saborn.heatmap в виде символов - PullRequest
0 голосов
/ 12 июля 2020

Мне нужны аннотации тепловой карты в виде символов. '*' на месте 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()

1 Ответ

0 голосов
/ 13 июля 2020

Тепловая карта может быть снабжена только цифрами. Чтобы поместить другой текст (или символы 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()

пример сюжета

...