Introducción
Este tutorial lo guiará a través del proceso de crear un conjunto de imágenes con una sola mapa de colores, norma y barra de colores en la biblioteca Matplotlib de Python. Aprenderá cómo generar datos, establecer escalas de color y actualizar imágenes para responder a cambios en la norma de otras imágenes.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Importar bibliotecas
Primero, necesitamos importar las bibliotecas necesarias: numpy y matplotlib. También estableceremos una semilla aleatoria para garantizar la reproducibilidad.
import matplotlib.pyplot as plt
import numpy as np
Generar datos y crear subtramas
A continuación, generaremos datos para nuestras imágenes. Crearemos una cuadrícula de subtramas de 3x2, donde cada subtrama contendrá una matriz aleatoria de valores generada.
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()
Establecer escala de color y crear barra de colores
Ahora, estableceremos la escala de color para nuestras imágenes y crearemos una barra de colores para mostrar el rango de valores. Encontraremos los valores mínimo y máximo para todas las imágenes y normalizaremos la escala de color en consecuencia.
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)
Actualizar imágenes
Finalmente, actualizaremos las imágenes para responder a los cambios en la norma de otras imágenes. Esto nos permitirá cambiar el mapa de colores y la escala de color de una imagen y que todas las demás se actualicen en consecuencia.
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.callbacks.connect('changed', update)
Resumen
En este laboratorio, aprendimos cómo crear un conjunto de imágenes con un solo mapa de colores, norma y barra de colores en la biblioteca Matplotlib de Python. Generamos datos, establecimos escalas de color y actualizamos las imágenes para responder a los cambios en la norma de otras imágenes. Esta es una técnica útil para visualizar múltiples conjuntos de datos con la misma escala de color y mapa de colores.