""" =========== Multi Image =========== Make a set of images with a single colormap, norm, and colorbar. """ from matplotlib import colors import matplotlib.pyplot as plt import numpy as np np.random.seed(19680801) Nr = 3 Nc = 2 fig, axs = plt.subplots(Nr, Nc) fig.suptitle('Multiple images') images = [] for i in range(Nr): for j in range(Nc): # Generate data with a range that varies from one plot to the next. data = ((1 + i + j) / 10) * np.random.rand(10, 20) images.append(axs[i, j].imshow(data)) axs[i, j].label_outer() # Find the min and max of all colors for use in setting the color scale. vmin = min(image.get_array().min() for image in images) vmax = max(image.get_array().max() for image in images) norm = colors.Normalize(vmin=vmin, vmax=vmax) for im in images: im.set_norm(norm) fig.colorbar(images[0], ax=axs, orientation='horizontal', fraction=.1) # Make images respond to changes in the norm of other images (e.g. via the # "edit axis, curves and images parameters" GUI on Qt), but be careful not to # recurse infinitely! def update(changed_image): for im in images: if (changed_image.get_cmap() != im.get_cmap() or changed_image.get_clim() != im.get_clim()): im.set_cmap(changed_image.get_cmap()) im.set_clim(changed_image.get_clim()) for im in images: im.callbacksSM.connect('changed', update) plt.show() ############################################################################# # # ------------ # # References # """""""""" # # The use of the following functions, methods and classes is shown # in this example: import matplotlib matplotlib.axes.Axes.imshow matplotlib.pyplot.imshow matplotlib.figure.Figure.colorbar matplotlib.pyplot.colorbar matplotlib.colors.Normalize matplotlib.cm.ScalarMappable.set_cmap matplotlib.cm.ScalarMappable.set_norm matplotlib.cm.ScalarMappable.set_clim matplotlib.cbook.CallbackRegistry.connect