首页 > 解决方案 > 将 set_over 颜色添加到热图中的 cbar

问题描述

我在 seaborn 中创建了 hetmap,并设置了 vmin、vmax 并设置了超值,因此如果 heatmap 中单元格的值超过 0.05,它会获得银色。过去,我设法创建了 cbar,它还显示了其中的 set_over 颜色,如下所示:

在此处输入图像描述

问题是现在我不记得我过去是如何做到的,并且在文档中找不到任何解释。所以我正在寻找将这个“灰色三角形帽子”添加到我的 cbar 的方法。这就是我现在所做的:

green = sns.light_palette("green", reverse=True, as_cmap=True)
green.set_over('silver')

# common settings: linewidths for grid lines, hide colorbar, set square aspect
kwargs = dict(linewidths=1, cbar=True, square=True)

#I removed  here the part of the code that uses mask 
g=sns.heatmap(df_fruits, mask=mask, cmap=cmap, ax=ax,vmin=0,vmax=0.05, **kwargs)
    

g.set_facecolor('xkcd:silver')

在此处输入图像描述

我的最终目标:能够将这个“灰色三角帽”添加到我的 cbar 中,设置为 set_over 值(大于 0.05)

标签: pythonseabornheatmap

解决方案


您还可以为颜色栏关键字制作一个 dict 并设置extend='max'.

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

np.random.seed(123)

green = sns.light_palette("green", reverse=True, as_cmap=True)
green.set_over('silver')

cbar_kws = dict(extend='max')
kwargs = dict(linewidths=1, square=True, cbar=True, cbar_kws=cbar_kws)
ax = sns.heatmap(np.random.rand(10, 10) / 10, cmap=green, vmin=0, vmax=0.05, **kwargs)

ax.set_facecolor('xkcd:silver')
plt.tight_layout()
plt.show()

seaborn 热图


推荐阅读