gpt4 book ai didi

Seaborn diverging_palette 具有超过 2 种色调

转载 作者:行者123 更新时间:2023-12-03 23:16:04 24 4
gpt4 key购买 nike

我试图使用 Seaborn 绘制相关矩阵,但我想用红色突出显示正负极值,用绿色突出显示中间值。在我能找到的所有示例中,相关矩阵是用 diverging_palette 绘制的,但这仅允许您为光谱的末端选择两种颜色,并为中间选择浅色(白色)或深色(黑色)值。在 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()

enter image description here

最佳答案

您可以使用 LinearSegmentedColormap 从颜色列表创建颜色图,从而使您能够通过更好地控制颜色转换来实现 diverging_palletette 的效果。

将此代码插入上面的示例给出了我正在寻找的效果:

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

enter image description here

关于Seaborn diverging_palette 具有超过 2 种色调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com