注意
转到末尾下载完整的示例代码。
具有一个颜色条的多个图像#
对多个图像使用单个颜色条。
目前,一个颜色条只能连接到一个图像。此连接保证数据着色与颜色图比例一致(即,颜色图中值 *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.114 秒)