热图 Cbar 调整颜色渐变

发布于 2025-01-11 13:15:53 字数 970 浏览 1 评论 0原文

我尝试调整我的 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 无法正常工作

I try to adjust my cbar color but struggling with it :

When I use : Center=None I have the following bar :

enter image description here

And When I use Center=0 , I have the following bar :

enter image description here

But it is not what I except : My goal is to have red starting at zero and being more and more red more the value is less than 0.

So the bar should look Like stuff like that :

enter image description here

So like this it will be more readable : Red Negative - Green Positive

(More its Red More its negative - More its Green more it is positive)

Below is my line of code :

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

It seems that vmin and vmax does not work as excepted

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无法回应 2025-01-18 13:15:53

您似乎想要一个以不同方式压缩两个部分的 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()

sns.heatmap TwoSlopeNorm

You seem to want a TwoSlopeNorm which compresses both parts differently. (The default uses symmetric coloring.)

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

sns.heatmap TwoSlopeNorm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文