Crear una cuadrícula de imágenes con Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial demostrará cómo crear una cuadrícula de imágenes utilizando ImageGrid de Matplotlib. Crearemos una cuadrícula de 2x2 de imágenes y exploraremos varias maneras de agregar barras de color a la cuadrícula.

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 las 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 las bibliotecas y datos necesarios

En primer lugar, necesitamos importar las bibliotecas y datos necesarios para crear nuestra cuadrícula. Usaremos matplotlib.pyplot para la representación gráfica, cbook para obtener un conjunto de datos de muestra y ImageGrid para crear nuestra cuadrícula.

import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import ImageGrid

## Obtener datos de muestra
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## Matriz 15x15
extent = (-3, 4, -4, 3)

Crear una cuadrícula de imágenes 2x2 con una sola barra de color

Nuestra primera cuadrícula será una cuadrícula de imágenes 2x2 con una sola barra de color. Usaremos la función ImageGrid para crear la cuadrícula y especificar el número de filas y columnas que queremos. También especificaremos la ubicación de la barra de color y estableceremos share_all en True para compartir la barra de color entre todas las imágenes.

## Crear una cuadrícula de imágenes 2x2 con una sola barra de color
grid = ImageGrid(
    fig,  ## Objeto Figure
    141,  ## Ubicación del subplot
    nrows_ncols=(2, 2),  ## Número de filas y columnas
    axes_pad=0.0,  ## Espaciado entre los ejes
    label_mode="L",  ## Modo de etiquetado
    share_all=True,  ## Compartir barra de color entre todas las imágenes
    cbar_location="top",  ## Ubicación de la barra de color
    cbar_mode="single"  ## Modo de barra de color
)

## Graficar imágenes en la cuadrícula
for ax in grid:
    im = ax.imshow(Z, extent=extent)

## Agregar barra de color a la cuadrícula
grid.cbar_axes[0].colorbar(im)
for cax in grid.cbar_axes:
    cax.tick_params(labeltop=False)

Crear una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color

Nuestra siguiente cuadrícula será una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color. Usaremos nuevamente la función ImageGrid, pero esta vez estableceremos cbar_mode en "each" para especificar que cada imagen debe tener su propia barra de color.

## Crear una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color
grid = ImageGrid(
    fig,  ## Objeto Figure
    142,  ## Ubicación del subplot
    nrows_ncols=(2, 2),  ## Número de filas y columnas
    axes_pad=0.1,  ## Espaciado entre los ejes
    label_mode="1",  ## Modo de etiquetado
    share_all=True,  ## Compartir barra de color entre todas las imágenes
    cbar_location="top",  ## Ubicación de la barra de color
    cbar_mode="each",  ## Modo de barra de color
    cbar_size="7%",  ## Tamaño de la barra de color
    cbar_pad="2%"  ## Espaciado entre la barra de color y las imágenes
)

## Graficar imágenes en la cuadrícula y agregar barras de color
for ax, cax in zip(grid, grid.cbar_axes):
    im = ax.imshow(Z, extent=extent)
    cax.colorbar(im)
    cax.tick_params(labeltop=False)

Crear una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color y un rango de barra de color diferente

Nuestra última cuadrícula también será una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color, pero esta vez usaremos un rango de barra de color diferente para cada imagen. Estableceremos el rango de la barra de color usando vmin y vmax al graficar cada imagen.

## Crear una cuadrícula de imágenes 2x2 con cada imagen teniendo su propia barra de color y un rango de barra de color diferente
grid = ImageGrid(
    fig,  ## Objeto Figure
    143,  ## Ubicación del subplot
    nrows_ncols=(2, 2),  ## Número de filas y columnas
    axes_pad=(0.45, 0.15),  ## Espaciado entre los ejes
    label_mode="1",  ## Modo de etiquetado
    share_all=True,  ## Compartir barra de color entre todas las imágenes
    cbar_location="right",  ## Ubicación de la barra de color
    cbar_mode="each",  ## Modo de barra de color
    cbar_size="7%",  ## Tamaño de la barra de color
    cbar_pad="2%"  ## Espaciado entre la barra de color y las imágenes
)

## Graficar imágenes en la cuadrícula y agregar barras de color
limits = ((0, 1), (-2, 2), (-1.7, 1.4), (-1.5, 1))  ## Rangos de barra de color diferentes
for ax, cax, vlim in zip(grid, grid.cbar_axes, limits):
    im = ax.imshow(Z, extent=extent, vmin=vlim[0], vmax=vlim[1])
    cb = cax.colorbar(im)
    cb.set_ticks((vlim[0], vlim[1]))

Resumen

En este tutorial, aprendimos cómo crear una cuadrícula de imágenes usando ImageGrid de Matplotlib. Exploramos diferentes maneras de agregar barras de color a la cuadrícula, incluyendo usar una sola barra de color para todas las imágenes, dar a cada imagen su propia barra de color y dar a cada imagen su propia barra de color con un rango de barra de color diferente.