首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两色以上的海运diverging_palette

两色以上的海运diverging_palette
EN

Stack Overflow用户
提问于 2018-06-04 14:23:41
回答 1查看 8.8K关注 0票数 5

我试图用Seaborn绘制一个相关矩阵,但我想突出红色和绿色中间值的正负极值。在我可以找到的所有示例中,相关矩阵都是用diverging_palette绘制的,但这只允许您为光谱的末尾选择两种颜色,并为中间值选择光(白色)或暗(黑色)颜色。在StackOverflow和其他网站上搜索之后,我无法找到解决方案,所以我发布了我找到的解决方案。

以下是Seaborn的例子:

correlations.html https://seaborn.pydata.org/generated/seaborn.heatmap.html

下面是代码来生成下面的图来说明这个问题。我要找的是绿色是0值,红色是正负值。

代码语言:javascript
复制
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()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 14:23:41

您可以使用LinearSegmentedColormap从一个颜色列表创建一个颜色映射,该列表允许您通过对颜色转换进行更大的控制来实现diverging_pallette的效果。

将此代码插入上面的示例将产生我正在搜索的效果:

代码语言:javascript
复制
from matplotlib.colors import LinearSegmentedColormap
cmap = LinearSegmentedColormap.from_list(
    name='test', 
    colors=['red','white','green','white','red']
)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50682797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档