如何反转seaborn热图颜色条的颜色

Posted

技术标签:

【中文标题】如何反转seaborn热图颜色条的颜色【英文标题】:How to invert color of seaborn heatmap colorbar 【发布时间】:2018-05-07 18:34:48 【问题描述】:

我使用热图来可视化混淆矩阵。我喜欢标准颜色,但我希望浅橙色为 0,深紫色为最高值。

我设法只使用另一组颜色(浅紫色到深紫色),设置:

colormap = sns.cubehelix_palette(as_cmap=True)
ax = sns.heatmap(cm_prob, annot=False, fmt=".3f", xticklabels=print_categories, yticklabels=print_categories, vmin=-0.05, cmap=colormap)

但我想保留这些标准的。这是我的代码和我得到的图像。

ax = sns.heatmap(cm_prob, annot=False, fmt=".3f", xticklabels=print_categories, yticklabels=print_categories, vmin=-0.05)

【问题讨论】:

【参考方案1】: 只将cmap="rocket_r" 添加到sns.heatmap cmap="rocket": 是热图的默认调色板 add_r: 反转调色板的颜色
ax = sns.heatmap(cm_prob, annot=False, fmt=".3f", xticklabels=print_categories, yticklabels=print_categories, vmin=-0.05,cmap="rocket_r")

【讨论】:

【参考方案2】:

我们现在只需将 _r 放在末尾即可快速实现反色。

例如:对于 viridis => viridis_r

sns.heatmap(corr_matrix, annot=True, cmap='viridis_r');

【讨论】:

【参考方案3】:

要扩展 Ben 的答案,您可以使用大多数(如果不是任何颜色图)来做到这一点。

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
X = np.random.random((4, 4))
sns.heatmap(X,cmap="Blues")
plt.show()
sns.heatmap(X,cmap="Blues_r")
plt.show()
sns.heatmap(X,cmap="YlGnBu")
plt.show()
sns.heatmap(X,cmap="YlGnBu_r")
plt.show()

【讨论】:

【参考方案4】:

默认的 cmap 是sns.cm.rocket。要反转它,请将 cmap 设置为 sns.cm.rocket_r

使用您的代码:

cmap = sns.cm.rocket_r

ax = sns.heatmap(cm_prob,
                 annot=False,
                 fmt=".3f",
                 xticklabels=print_categories,
                 yticklabels=print_categories,
                 vmin=-0.05,
                 cmap = cmap)

【讨论】:

对我来说,我必须使用plt.cm,因为sns 没有cm 模块。 @AmirhosImani 您使用的是哪个版本的 seaborn?看起来它仍然是当前版本的一部分(见here)【参考方案5】:

您是否尝试反转颜色图?

sns.cubehelix_palette(as_cmap=True, reverse=True)

【讨论】:

是的,但是,正如我在问题中已经写的那样,我想要那些相同的标准颜色,而不是 cubehelix_palette 中的那些(它有没有橙色的紫色阴影) 当时我可能误解了这个问题。也许另一个答案就是你要找的?

以上是关于如何反转seaborn热图颜色条的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何将颜色条居中于 seaborn 热图的定义值?

Seaborn 热图:在绘图顶部移动颜色条

更改 seaborn 热图颜色条上的刻度大小

具有二进制颜色编码和原始输入注释的 seaborn 热图

Plotly 热图中颜色条的标题

绘制排序的热图保持(x,y)值颜色