热图 Cbar 调整颜色渐变

Heatmap Cbar Adjust Color Gradient

我尝试调整我的 cbar 颜色,但很难做到:

当我使用时:Center=None 我有以下栏:

当我使用 Center=0 时,我有以下栏:

但这不是我的例外:我的目标是让红色从零开始并且越来越红,值小于 0。

所以酒吧应该看起来像这样的东西:

所以像这样它会更具可读性:红色负 - 绿色正

(越红越负-越绿越正)

下面是我的代码行:

ax = sns.heatmap(result, linewidth=0.1,cmap="RdYlGn",
cbar_kws=dict(ticks= [result.min()/2,.0,result.max()/2]),
center=None,vmin=result.min(),vmax=result.max(),robust=True,fmt="f")

似乎 vminvmax 没有正常工作

您似乎想要一个 TwoSlopeNorm 以不同方式压缩两个部分。 (默认使用对称着色。)

from matplotlib import pyplot as plt
from matplotlib.colors import TwoSlopeNorm
import seaborn as sns

norm = TwoSlopeNorm(vcenter=0)
result = np.random.uniform(-0.01, 0.1, (10, 10))
ax = sns.heatmap(result, linewidth=0.1, cmap="RdYlGn", norm=norm,
                 cbar_kws=dict(ticks=[result.min() / 2, .0, result.max() / 2]),
                 robust=True, fmt="f")
plt.show()