Tutorial de alternancia de leyenda en 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

En este laboratorio, aprenderemos cómo habilitar la selección en la leyenda para activar y desactivar la línea original utilizando Python 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 resolveremos el problema inmediatamente para usted.

Importar las bibliotecas necesarias

En primer lugar, necesitamos importar las bibliotecas necesarias, que son NumPy y Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Preparar los datos

Generaremos dos ondas sinusoidales con diferentes frecuencias utilizando NumPy.

t = np.linspace(0, 1)
y1 = 2 * np.sin(2*np.pi*t)
y2 = 4 * np.sin(2*np.pi*2*t)

Crear figura y ejes

Crearemos una figura y ejes utilizando Matplotlib y estableceremos el título de la gráfica.

fig, ax = plt.subplots()
ax.set_title('Click on legend line to toggle line on/off')

Crear líneas y leyenda

Crearemos dos líneas y una leyenda utilizando Matplotlib.

line1, = ax.plot(t, y1, lw=2, label='1 Hz')
line2, = ax.plot(t, y2, lw=2, label='2 Hz')
leg = ax.legend(fancybox=True, shadow=True)

Asignar las líneas de la leyenda a las líneas originales

Asignaremos las líneas de la leyenda a las líneas originales utilizando un diccionario.

lines = [line1, line2]
lined = {}  ## Asignará las líneas de la leyenda a las líneas originales.
for legline, origline in zip(leg.get_lines(), lines):
    legline.set_picker(True)  ## Habilita la selección en la línea de la leyenda.
    lined[legline] = origline

Definir la función del evento de selección

Definiremos la función del evento de selección que cambiará la visibilidad de la línea original correspondiente a la línea proxy de la leyenda.

def on_pick(event):
    ## En el evento de selección, encontrar la línea original correspondiente a la
    ## línea proxy de la leyenda y cambiar su visibilidad.
    legline = event.artist
    origline = lined[legline]
    visible = not origline.get_visible()
    origline.set_visible(visible)
    ## Cambiar la transparencia de la línea en la leyenda, para que podamos ver
    ## qué líneas se han alternado.
    legline.set_alpha(1.0 si visible else 0.2)
    fig.canvas.draw()

Conectar la función del evento de selección a la superficie de dibujo

Conectaremos la función del evento de selección a la superficie de dibujo.

fig.canvas.mpl_connect('pick_event', on_pick)

Mostrar la gráfica

Mostraremos la gráfica utilizando Matplotlib.

plt.show()

Resumen

En este laboratorio, aprendimos cómo habilitar la selección en la leyenda para alternar la línea original encendida y apagada utilizando Python y Matplotlib. Creamos una figura y ejes, preparamos los datos, creamos las líneas y la leyenda, asignamos las líneas de la leyenda a las líneas originales, definimos la función del evento de selección, conectamos la función del evento de selección a la superficie de dibujo y mostramos la gráfica.