我使用以下命令绘制了以下相关矩阵“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 时呈现红色色调。这样,绿色(或冷色)意味着“无相关性”,红色(暖色)意味着“高相关性”(正相关或负相关)。
谢谢你。
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'])