Matplotlib : curseurs à sauts

Beginner

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

Introduction

Dans ce laboratoire, vous allez apprendre à utiliser Matplotlib pour créer des curseurs à valeurs discrètes. Vous allez apprendre à contraindre les valeurs d'un curseur à un ensemble de valeurs autorisées et à forcer les valeurs du curseur à s'arrêter sur ces valeurs autorisées.

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 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 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églerons rapidement le problème pour vous.

Importez les bibliothèques requises

Dans cette étape, vous allez importer les bibliothèques requises pour ce laboratoire. Vous utiliserez Matplotlib pour créer les curseurs et NumPy pour générer les données à tracer.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.widgets import Button, Slider

Générer des données

Dans cette étape, vous allez générer les données à tracer. Vous allez créer une onde sinusoïdale avec une fréquence de 3 Hz et une amplitude de 5.

t = np.arange(0.0, 1.0, 0.001)
a0 = 5
f0 = 3
s = a0 * np.sin(2 * np.pi * f0 * t)

Créer la figure et les axes

Dans cette étape, vous allez créer la figure et les axes pour le tracé. Vous ajusterez également la position des axes pour laisser de la place aux curseurs.

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25)
l, = ax.plot(t, s, lw=2)

ax_freq = fig.add_axes([0.25, 0.1, 0.65, 0.03])
ax_amp = fig.add_axes([0.25, 0.15, 0.65, 0.03])

Définir les valeurs autorisées pour le curseur d'amplitude

Dans cette étape, vous allez définir les valeurs autorisées pour le curseur d'amplitude. Le curseur d'amplitude utilisera ces valeurs pour s'arrêter sur la valeur autorisée la plus proche.

## define the values to use for snapping
allowed_amplitudes = np.concatenate([np.linspace(.1, 5, 100), [6, 7, 8, 9]])

Créer les curseurs

Dans cette étape, vous allez créer les curseurs. Vous en créerez un pour l'amplitude et un pour la fréquence.

samp = Slider(
    ax_amp, "Amp", 0.1, 9.0,
    valinit=a0, valstep=allowed_amplitudes,
    color="green"
)

sfreq = Slider(
    ax_freq, "Freq", 0, 10*np.pi,
    valinit=2*np.pi, valstep=np.pi,
    initcolor='none'  ## Remove the line marking the valinit position.
)

Créer la fonction de mise à jour

Dans cette étape, vous allez créer la fonction de mise à jour pour les curseurs. Cette fonction mettra à jour le tracé lorsque les valeurs des curseurs sont modifiées.

def update(val):
    amp = samp.val
    freq = sfreq.val
    l.set_ydata(amp*np.sin(2*np.pi*freq*t))
    fig.canvas.draw_idle()

Connecter les curseurs à la fonction de mise à jour

Dans cette étape, vous allez connecter les curseurs à la fonction de mise à jour. Cela garantira que le tracé est mis à jour chaque fois que les valeurs des curseurs sont modifiées.

sfreq.on_changed(update)
samp.on_changed(update)

Créer le bouton de réinitialisation

Dans cette étape, vous allez créer un bouton de réinitialisation pour les curseurs. Lorsqu'il est cliqué, le bouton de réinitialisation remettra les valeurs des curseurs à leurs valeurs initiales.

ax_reset = fig.add_axes([0.8, 0.025, 0.1, 0.04])
button = Button(ax_reset, 'Reset', hovercolor='0.975')

def reset(event):
    sfreq.reset()
    samp.reset()
button.on_clicked(reset)

Afficher le tracé

Dans cette étape, vous allez afficher le tracé.

plt.show()

Sommaire

Dans ce laboratoire, vous avez appris à utiliser Matplotlib pour créer des curseurs avec des valeurs discrètes. Vous avez appris à contraindre les valeurs d'un curseur à un ensemble de valeurs autorisées et à forcer les valeurs du curseur à correspondre à ces valeurs autorisées. Vous avez également appris à créer un bouton de réinitialisation pour les curseurs.