Selector de Eje de Matplotlib

Beginner

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

Introducción

Esta práctica te guiará sobre cómo utilizar el Seletor de Intervalos de Matplotlib para seleccionar un rango en un eje y trazar una vista detallada del rango seleccionado en otro eje.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz 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 tengas que esperar unos segundos a que Jupyter Notebook termine de cargar. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos el problema para ti de inmediato.

Importar las bibliotecas necesarias

En primer lugar, necesitamos importar las bibliotecas necesarias: numpy y matplotlib.

import numpy as np
import matplotlib.pyplot as plt

Crear datos de muestra

Ahora crearemos algunos datos de muestra para graficar usando numpy.

## Fixing random state for reproducibility
np.random.seed(19680801)

x = np.arange(0.0, 5.0, 0.01)
y = np.sin(2 * np.pi * x) + 0.5 * np.random.randn(len(x))

Crear figura y subtramas

Ahora crearemos una figura con dos subtramas usando matplotlib.

fig, (ax1, ax2) = plt.subplots(2, figsize=(8, 6))

Graficar datos en la primera subtrama

Graficaremos los datos de muestra en la primera subtrama.

ax1.plot(x, y)
ax1.set_ylim(-2, 2)
ax1.set_title('Presiona el botón izquierdo del mouse y arrastra '
              'para seleccionar una región en la gráfica superior')

Definir una función de devolución de llamada

Definiremos una función de devolución de llamada que se llamará cuando se seleccione un rango usando el Selector de Eje.

def onselect(xmin, xmax):
    indmin, indmax = np.searchsorted(x, (xmin, xmax))
    indmax = min(len(x) - 1, indmax)

    region_x = x[indmin:indmax]
    region_y = y[indmin:indmax]

    if len(region_x) >= 2:
        line2.set_data(region_x, region_y)
        ax2.set_xlim(region_x[0], region_x[-1])
        ax2.set_ylim(region_y.min(), region_y.max())
        fig.canvas.draw_idle()

Crear un Selector de Eje

Crearemos un objeto Selector de Eje usando matplotlib.widgets.SpanSelector.

span = SpanSelector(
    ax1,
    onselect,
    "horizontal",
    useblit=True,
    props=dict(alpha=0.5, facecolor="tab:blue"),
    interactive=True,
    drag_from_anywhere=True
)

Graficar datos en la segunda subtrama

Graficaremos la vista detallada del rango seleccionado en la segunda subtrama.

line2, = ax2.plot([], [])

Mostrar la gráfica

Ahora mostraremos la gráfica usando matplotlib.pyplot.show().

plt.show()

Resumen

En este laboratorio, aprendimos cómo usar el Selector de Eje de Matplotlib para seleccionar un rango en un eje y graficar una vista detallada del rango seleccionado en otro eje. También aprendimos cómo crear un objeto Selector de Eje y definir una función de devolución de llamada para manejar el rango seleccionado.