注意
转到页面底部下载完整的示例代码。
多个图像共用一个颜色条#
为多个图像使用一个单独的颜色条。
目前,一个颜色条只能连接到一个图像。这种连接保证了数据着色与颜色映射尺度保持一致(即颜色映射中值 x 的颜色用于图像中数据值 x 的着色)。
如果我们希望一个颜色条能代表多个图像,我们必须通过对所有图像使用相同的数据归一化来明确确保数据着色的一致性。我们通过显式创建一个 norm
对象并将其传递给所有图像绘图方法来实现这一点。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
np.random.seed(19680801)
datasets = [
(i+1)/10 * np.random.rand(10, 20)
for i in range(4)
]
fig, axs = plt.subplots(2, 2)
fig.suptitle('Multiple images')
# create a single norm to be shared across all images
norm = colors.Normalize(vmin=np.min(datasets), vmax=np.max(datasets))
images = []
for ax, data in zip(axs.flat, datasets):
images.append(ax.imshow(data, norm=norm))
fig.colorbar(images[0], ax=axs, orientation='horizontal', fraction=.1)
plt.show()

当改变缩放比例时(例如通过在颜色条中缩放或通过Qt后端中“编辑轴、曲线和图像参数”GUI),颜色现在在所有图像中保持一致。这对于大多数实际用例来说已足够。
高级:额外同步颜色映射#
共享一个公共的 norm 对象可保证同步缩放,因为缩放更改会就地修改 norm 对象,从而传播到所有使用此 norm 的图像。这种方法无助于同步颜色映射,因为更改图像的颜色映射(例如通过Qt后端中“编辑轴、曲线和图像参数”GUI)会导致图像引用新的颜色映射对象。因此,其他图像不会更新。
要更新其他图像,请使用以下代码同步颜色映射
参考
本示例展示了以下函数、方法、类和模块的使用
脚本总运行时间: (0 分 1.012 秒)