Generación de imágenes con mapa de colores de Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

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.