Utilisation des boutons de contrôle dans 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 démontrer comment utiliser les boutons de contrôle dans Python Matplotlib. Les boutons de contrôle permettent aux utilisateurs d'activer et de désactiver des éléments visuels avec des boutons de contrôle, similaire aux cases à cocher. Nous utiliserons la fonction CheckButtons pour créer un graphique avec trois différentes ondes sinusoïdales, et la possibilité de choisir les ondes à afficher avec les boutons de contrôle.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes 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 limitations 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

Nous allons commencer par importer les bibliothèques nécessaires. Nous avons besoin de numpy pour générer les données et de matplotlib pour créer le graphique.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import CheckButtons

Générer les données

Ensuite, nous allons générer les données pour notre graphique. Nous allons créer trois ondes sinusoïdales avec des fréquences différentes en utilisant numpy.

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)

Créer le graphique

Maintenant, nous allons créer le graphique en utilisant matplotlib. Nous allons tracer les trois ondes sinusoïdales sur le même graphique et définir la visibilité de la première onde sur False car nous voulons commencer avec elle cachée.

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2, color='black', label='1 Hz')
l1, = ax.plot(t, s1, lw=2, color='red', label='2 Hz')
l2, = ax.plot(t, s2, lw=2, color='green', label='3 Hz')
fig.subplots_adjust(left=0.2)

Ajouter des boutons de contrôle

Nous allons maintenant ajouter les boutons de contrôle à notre graphique en utilisant la fonction CheckButtons. Nous allons passer les lignes tracées comme étiquettes et définir la visibilité initiale de chaque ligne. Nous allons également ajuster les propriétés des boutons de contrôle pour qu'ils correspondent aux couleurs des lignes tracées.

lines_by_label = {l.get_label(): l for l in [l0, l1, l2]}
line_colors = [l.get_color() for l in lines_by_label.values()]

rax = fig.add_axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(
    ax=rax,
    labels=lines_by_label.keys(),
    actives=[l.get_visible() for l in lines_by_label.values()],
    label_props={'color': line_colors},
    frame_props={'edgecolor': line_colors},
    check_props={'facecolor': line_colors},
)

Définir la fonction de rappel

Nous devons définir une fonction de rappel pour les boutons de contrôle. Cette fonction sera appelée chaque fois qu'un bouton de contrôle est cliqué. Nous utiliserons cette fonction pour basculer la visibilité de la ligne correspondante sur le graphique.

def callback(label):
    ln = lines_by_label[label]
    ln.set_visible(not ln.get_visible())
    ln.figure.canvas.draw_idle()

check.on_clicked(callback)

Afficher le graphique

Enfin, nous allons afficher le graphique en utilisant la fonction show().

plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser des boutons de contrôle en Python Matplotlib. Nous avons créé un graphique avec trois ondes sinusoïdales différentes, et la possibilité de choisir les ondes à afficher avec les boutons de contrôle. Nous avons utilisé la fonction CheckButtons pour créer les boutons et défini une fonction de rappel pour basculer la visibilité de la ligne correspondante sur le graphique.