温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Customized color palette in seaborn heatmap
matplotlib python seaborn

python - Seaborn Heatmap中的自定义调色板

发布于 2021-04-13 21:35:55

我使用以下命令绘制了以下相关矩阵“ corr”:

import seaborn as sns; 
sns.set()
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6,6))
ax = sns.heatmap(corr, annot=True, fmt="0.2f", linewidths=.5)

在此处输入图片说明

有没有一种方法可以创建一个在0附近对称的调色板。如果可能的话,可以在0附近使用绿色调,在接近+1或-1时使用红色调。这样,绿色(或冷色)表示“无相关”,红色(暖色)表示“高相关”(正或负)。

谢谢你。

查看更多

提问者
Chao
被浏览
0
JohanC 2020-07-26 23:45

LinearSegmentedColormap.from_list都可以使用。为了使绿色精确地位于中心,vmin并且vmax需要将对称设置为零。

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import numpy as np

corr = np.corrcoef(np.random.random(((5, 5))))

fig, ax = plt.subplots(figsize=(6,6))

cmap = LinearSegmentedColormap.from_list('RedGreenRed', ['crimson', 'lime', 'crimson'])
ax = sns.heatmap(corr, cmap=cmap, vmin=-1, vmax=1, annot=True, fmt="0.2f", linewidths=.5)
plt.show()

样例

PS:在红色和绿色之间添加淡黄色的颜色看起来更好: LinearSegmentedColormap.from_list('', ['crimson', 'gold', 'lime', 'gold', 'crimson'])