matplotlib - 确保 0 在 RdBu 彩条中变白
问题描述
我使用以下代码段创建了一个热图:
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()
现在,由于数据的中点不是 0,因此颜色图值为 0 的单元格不是白色,而是略带红色。
如何强制颜色图使 max=blue、min=red 和 0=white?
解决方案
注意:从 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()
推荐阅读
- c# - ASP.NET MVC ViewModel 与模型验证
- wordpress - 过滤器如何在 WordPress 数据表中工作?
- java - 如何使用 Java ArrayList 提高性能
- selenium - 如何从当前窗口打开新标签?
- bash - 如何使用 sed 在两个模式之间添加线条?
- javascript - 表小计和总计不计算
- angular - 如何获取此图像并使用http以角度4显示它?
- amazon-web-services - Terraform 了解哪些 AWS 资源
- c# - 如何将 SSL 证书更新发送到正在运行的应用程序?
- ef-code-first - 无法使用实体框架代码优先方法生成数据库表