Seaborn热力图上的注释作为符号。

4
我想要热图注释作为符号。'*'代表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个回答

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()

example plot


非常感谢您的帮助。它完美地运行着。 - himnahsu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接