【问题标题】:Seaborn diverging_palette with more than 2 color tones具有 2 种以上色调的 Seaborn Diverging_palette
【发布时间】:2018-06-04 22:23:41
【问题描述】:

我试图使用 Seaborn 绘制相关矩阵,但我想用红色突出显示正极值和负极值,用绿色突出中间值。在我能找到的所有示例中,相关矩阵都是用发散调色板绘制的,但这仅允许您为光谱的末端选择两种颜色,并为中间选择浅色(白色)或深色(黑色)价值观。在 StackOverflow 和其他网站上搜索后,我无法找到解决方案,所以我发布了我找到的解决方案。

以下是 Seaborn 的示例:

https://seaborn.pydata.org/examples/many_pairwise_correlations.html https://seaborn.pydata.org/generated/seaborn.heatmap.html

这里是生成下图来说明问题的代码。我正在寻找的是绿色为 0 值,红色为正值和负值。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

np.random.seed(5)
df = pd.DataFrame(np.random.randn(5,5))

# Generate a custom diverging colormap
cmap = sns.diverging_palette(133, 10, as_cmap=True)

with sns.axes_style("white"):
    ax = sns.heatmap(df, annot=True, fmt='.2f', cmap=cmap, vmin=-0.99, vmax=.99, center=0.00,
                square=True, linewidths=.5, annot_kws={"size": 8}, cbar_kws={"shrink": .5})
plt.show()

【问题讨论】:

    标签: seaborn colormap


    【解决方案1】:

    您可以使用 LinearSegmentedColormap 从颜色列表中创建颜色图,从而可以更好地控制颜色转换,从而实现发散调色板的效果。

    将这段代码插入到上面的示例中会得到我正在寻找的效果:

    from matplotlib.colors import LinearSegmentedColormap
    cmap = LinearSegmentedColormap.from_list(
        name='test', 
        colors=['red','white','green','white','red']
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2018-06-29
      • 2020-08-05
      • 2017-11-13
      • 2022-10-31
      相关资源
      最近更新 更多