【问题标题】:How to invert color of seaborn heatmap colorbar如何反转seaborn热图颜色条的颜色
【发布时间】: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)

【问题讨论】:

    标签: colors heatmap seaborn


    【解决方案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 中的那些(它有没有橙色的紫色阴影)
          • 当时我可能误解了这个问题。也许另一个答案就是你要找的?
          猜你喜欢
          • 2018-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-06
          • 2023-03-25
          • 2021-07-06
          • 2020-06-21
          相关资源
          最近更新 更多