Tutorial de alternancia de leyenda en Matplotlib

Beginner

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

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.