Créer des curseurs pour une onde sinusoïdale avec Matplotlib

MatplotlibMatplotlibBeginner
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 tutoriel, nous allons apprendre à créer des curseurs et à les utiliser pour contrôler la fréquence et l'amplitude d'une onde sinusoïdale. Nous utiliserons la bibliothèque Matplotlib pour créer un graphique de l'onde sinusoïdale et des curseurs. Les curseurs nous permettront de régler la fréquence et l'amplitude de l'onde sinusoïdale.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

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

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.

Importation des bibliothèques

La première étape consiste à importer les bibliothèques nécessaires. Nous allons utiliser Matplotlib et NumPy.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button, Slider

Définir la fonction d'onde sinusoïdale

Ensuite, nous allons définir la fonction qui générera notre onde sinusoïdale. La fonction prendra deux paramètres, amplitude et fréquence, et renverra l'onde sinusoïdale à un moment donné.

def f(t, amplitude, frequency):
    return amplitude * np.sin(2 * np.pi * frequency * t)

Créer le graphique initial

Maintenant, nous allons créer le graphique initial de l'onde sinusoïdale. Nous allons définir les paramètres initiaux pour l'amplitude et la fréquence et tracer l'onde sinusoïdale en utilisant ces paramètres.

t = np.linspace(0, 1, 1000)
init_amplitude = 5
init_frequency = 3

fig, ax = plt.subplots()
line, = ax.plot(t, f(t, init_amplitude, init_frequency), lw=2)
ax.set_xlabel('Time [s]')

Créer les curseurs

Nous allons maintenant créer les curseurs qui nous permettront de régler la fréquence et l'amplitude de l'onde sinusoïdale. Nous créerons un curseur horizontal pour contrôler la fréquence et un curseur vertical pour contrôler l'amplitude.

fig.subplots_adjust(left=0.25, bottom=0.25)
axfreq = fig.add_axes([0.25, 0.1, 0.65, 0.03])
freq_slider = Slider(
    ax=axfreq,
    label='Frequency [Hz]',
    valmin=0.1,
    valmax=30,
    valinit=init_frequency,
)

axamp = fig.add_axes([0.1, 0.25, 0.0225, 0.63])
amp_slider = Slider(
    ax=axamp,
    label="Amplitude",
    valmin=0,
    valmax=10,
    valinit=init_amplitude,
    orientation="vertical"
)

Créer la fonction de mise à jour

Nous allons maintenant créer la fonction qui mettra à jour l'onde sinusoïdale chaque fois que nous ajustons les curseurs. La fonction prendra les valeurs des curseurs d'amplitude et de fréquence et mettra à jour l'onde sinusoïdale en conséquence.

def update(val):
    line.set_ydata(f(t, amp_slider.val, freq_slider.val))
    fig.canvas.draw_idle()

Enregistrer la fonction de mise à jour avec les curseurs

Ensuite, nous enregistrerons la fonction de mise à jour avec chaque curseur de sorte que la fonction soit appelée chaque fois que nous ajustons les curseurs.

freq_slider.on_changed(update)
amp_slider.on_changed(update)

Créer le bouton de réinitialisation

Nous allons maintenant créer un bouton de réinitialisation qui remettra les curseurs à leurs valeurs initiales.

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

def reset(event):
    freq_slider.reset()
    amp_slider.reset()
button.on_clicked(reset)

Afficher le graphique

Enfin, nous allons afficher le graphique avec les curseurs et le bouton de réinitialisation.

plt.show()

Sommaire

Dans ce tutoriel, nous avons appris à créer des curseurs et à les utiliser pour contrôler la fréquence et l'amplitude d'une onde sinusoïdale. Nous avons utilisé la bibliothèque Matplotlib pour créer un graphique de l'onde sinusoïdale et des curseurs. Nous avons créé un curseur horizontal pour contrôler la fréquence et un curseur vertical pour contrôler l'amplitude. Nous avons également créé un bouton de réinitialisation qui remet les curseurs à leurs valeurs initiales.