确保 0 在 RdBu 颜色条中变为白色

Lud*_*igH 4 matplotlib colormap

我使用以下代码段创建了一个热图:

import numpy as np
import matplotlib.pyplot as plt
d = np.random.normal(.4,2,(10,10))
plt.imshow(d,cmap=plt.cm.RdBu)
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果如下图: 在此处输入图片说明

现在,由于数据的中间点不是 0,因此颜色图值为 0 的单元格不是白色,而是略带红色。

如何强制颜色图使 max=blue、min=red 和 0=white?

Imp*_*est 6

使用一个DivergingNorm.

注意:从 matplotlib 3.2 开始DivergingNorm更名为TwoSlopeNorm

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

d = np.random.normal(.4,2,(10,10))

norm = mcolors.DivergingNorm(vmin=d.min(), vmax = d.max(), vcenter=0)
plt.imshow(d, cmap=plt.cm.RdBu, norm=norm)

plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 类“DivergingNorm”已重命名为“TwoSlopeNorm”,参见。[此处](https://matplotlib.org/stable/api/prev_api_changes/api_changes_3.2.0.html)。 (2认同)