Tutoriel sur le basculement de la légende avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à activer le survol de la légende pour basculer la ligne d'origine entre l'état activé et désactivé à l'aide de Python Matplotlib.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet d'étude pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques requises

Tout d'abord, nous devons importer les bibliothèques requises, qui sont NumPy et Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Préparer les données

Nous allons générer deux ondes sinusoïdales avec des fréquences différentes à l'aide de NumPy.

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

Créer une figure et des axes

Nous allons créer une figure et des axes à l'aide de Matplotlib et définir le titre du tracé.

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

Créer des lignes et une légende

Nous allons créer deux lignes et une légende à l'aide de 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)

Mapper les lignes de la légende aux lignes originales

Nous allons mapper les lignes de la légende aux lignes originales à l'aide d'un dictionnaire.

lines = [line1, line2]
lined = {}  ## Va mapper les lignes de la légende aux lignes originales.
for legline, origline in zip(leg.get_lines(), lines):
    legline.set_picker(True)  ## Active la sélection sur la ligne de la légende.
    lined[legline] = origline

Définir la fonction d'événement de sélection

Nous allons définir la fonction d'événement de sélection qui bascule la visibilité de la ligne d'origine correspondant à la ligne de proxy de la légende.

def on_pick(event):
    ## Lors de l'événement de sélection, trouver la ligne d'origine correspondant à la
    ## ligne de proxy de la légende, et basculer sa visibilité.
    legline = event.artist
    origline = lined[legline]
    visible = not origline.get_visible()
    origline.set_visible(visible)
    ## Changer l'opacité de la ligne dans la légende, afin que l'on puisse voir quelles
    ## lignes ont été basculées.
    legline.set_alpha(1.0 si visible sinon 0.2)
    fig.canvas.draw()

Connecter la fonction d'événement de sélection au canevas

Nous allons connecter la fonction d'événement de sélection au canevas.

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

Afficher le tracé

Nous allons afficher le tracé à l'aide de Matplotlib.

plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à activer la sélection sur la légende pour basculer la ligne d'origine entre visible et invisible à l'aide de Python Matplotlib. Nous avons créé une figure et des axes, préparé les données, créé des lignes et une légende, mappé les lignes de la légende aux lignes d'origine, défini la fonction d'événement de sélection, connecté la fonction d'événement de sélection au canevas et affiché le tracé.