如何在使用PowerNorm归一化时,让色条颜色压缩但刻度保持等距?
解决方案:自定义色条刻度与归一化结合
要实现用PowerNorm的颜色映射逻辑,同时让色条刻度保持等距,可以在创建色条时手动指定等距刻度,让这些刻度对应归一化后的颜色值,具体实现如下:
import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import PowerNorm x, _ = np.meshgrid(*2*(np.linspace(-1, 1, 100),)) # 应用PowerNorm归一化,同时自定义色条等距刻度 plt.subplot(121) norm = PowerNorm(gamma=4, vmin=-1, vmax=1) im = plt.imshow(x, norm=norm) # 设置与右侧子图一致的等距刻度 ticks = np.linspace(-1, 1, 5) plt.colorbar(im, ticks=ticks) # 原始无归一化对比图 plt.subplot(122) plt.imshow(x) plt.colorbar() plt.show()
效果说明
- 左侧子图的图像显示完全遵循
PowerNorm(gamma=4)的数值-颜色映射规则,和原左图的视觉效果一致; - 色条采用了和右侧子图相同的等距刻度,刻度分布均匀;
- 由于归一化的作用,色条的颜色会向数值分布的一端压缩,同时刻度保持等距排列,完美满足需求。
内容的提问来源于stack exchange,提问作者flawr
相关产品推荐
相关产品推荐

