Crear un recuadro insertado con zoom 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

Matplotlib es una popular biblioteca de visualización de datos en Python. Proporciona muchas herramientas para crear diferentes tipos de gráficos y diagramas. Una de las características útiles de Matplotlib es la capacidad de ampliar una región particular de un gráfico, lo que puede ayudar a analizar los datos con mayor detalle. En este laboratorio, aprenderemos cómo crear un recuadro insertado con zoom utilizando Matplotlib.

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 necesarias

Antes de comenzar a crear el recuadro insertado con zoom, necesitamos importar las bibliotecas necesarias. Para este laboratorio, usaremos matplotlib.pyplot y numpy.

import matplotlib.pyplot as plt
import numpy as np

Crear una figura y subtramas

A continuación, crearemos una figura y subtramas para mostrar nuestros datos. Crearemos dos subtramas lado a lado para mostrar dos ejemplos diferentes de recuadros insertados con zoom.

fig, (ax, ax2) = plt.subplots(ncols=2, figsize=[6, 3])

Crear un recuadro insertado con zoom con una barra de escala

En la primera subtrama, crearemos un recuadro insertado con zoom con una barra de escala. Esto mostrará cómo usar el método .zoomed_inset_axes para crear un recuadro insertado con zoom.

## Establece la relación de aspecto del gráfico en 1
ax.set_aspect(1)

## Crea un recuadro insertado con zoom en la esquina superior derecha del gráfico
axins = zoomed_inset_axes(ax, zoom=0.5, loc='upper right')

## Establece el número de marcas de graduación en los ejes del recuadro insertado
axins.yaxis.get_major_locator().set_params(nbins=7)
axins.xaxis.get_major_locator().set_params(nbins=7)

## Oculta las etiquetas de las marcas de graduación en los ejes del recuadro insertado
axins.tick_params(labelleft=False, labelbottom=False)

## Define una función para agregar una barra de escala al gráfico
def add_sizebar(ax, size):
    asb = AnchoredSizeBar(ax.transData,
                          size,
                          str(size),
                          loc=8,
                          pad=0.1, borderpad=0.5, sep=5,
                          frameon=False)
    ax.add_artist(asb)

## Agrega una barra de escala al gráfico principal y al gráfico del recuadro insertado
add_sizebar(ax, 0.5)
add_sizebar(axins, 0.5)

Crear una imagen con un zoom en el recuadro insertado y un recuadro insertado marcado

En la segunda subtrama, crearemos una imagen con un zoom en el recuadro insertado y un recuadro insertado marcado. Esto mostrará cómo usar el método .mark_inset para marcar la región de interés y conectarla con los ejes del recuadro insertado.

## Carga los datos de muestra para la imagen
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## matriz 15x15
extent = (-3, 4, -4, 3)
Z2 = np.zeros((150, 150))
ny, nx = Z.shape
Z2[30:30+ny, 30:30+nx] = Z

## Muestra la imagen en la subtrama
ax2.imshow(Z2, extent=extent, origin="lower")

## Crea un recuadro insertado con zoom en la esquina superior izquierda del gráfico
axins2 = zoomed_inset_axes(ax2, zoom=6, loc=1)

## Muestra la imagen en el gráfico del recuadro insertado
axins2.imshow(Z2, extent=extent, origin="lower")

## Establece los límites x e y del gráfico del recuadro insertado para mostrar la región de interés
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9
axins2.set_xlim(x1, x2)
axins2.set_ylim(y1, y2)

## Establece el número de marcas de graduación en los ejes del recuadro insertado
axins2.yaxis.get_major_locator().set_params(nbins=7)
axins2.xaxis.get_major_locator().set_params(nbins=7)

## Oculta las etiquetas de las marcas de graduación en los ejes del recuadro insertado
axins2.tick_params(labelleft=False, labelbottom=False)

## Marca la región de interés y la conecta con los ejes del recuadro insertado
mark_inset(ax2, axins2, loc1=2, loc2=4, fc="none", ec="0.5")

Mostrar el gráfico

Finalmente, mostraremos el gráfico usando el método plt.show().

plt.show()

Resumen

En este laboratorio, aprendimos cómo crear un recuadro insertado con zoom usando Matplotlib. Usamos los métodos .zoomed_inset_axes y .mark_inset para crear dos ejemplos diferentes de recuadros insertados con zoom. Al usar estos métodos, podemos analizar los datos de manera más detallada y obtener información que puede no ser visible en el gráfico original.