将 set_over 颜色添加到热图中的 cbar

Add the set_over color to cbar in heatmap

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

问题是现在我不记得我过去是怎么做的,也找不到文档中的任何解释。所以我正在寻找将这个“灰色三角帽”添加到我的 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')

我的最终目标:能够根据 set_over 值(大于 0.05)[=14= 将这个“灰色三角帽”添加到我的 cbar ]

你也可以为colorbar关键字做一个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()