Sinuswellenschieberegler mit Matplotlib erstellen

Beginner

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

Einführung

In diesem Tutorial lernen wir, wie man Schieberegler erstellt und diese verwendet, um die Frequenz und die Amplitude einer Sinuswelle zu steuern. Wir werden die Matplotlib-Bibliothek verwenden, um einen Graphen der Sinuswelle und der Schieberegler zu erstellen. Die Schieberegler werden uns ermöglichen, die Frequenz und die Amplitude der Sinuswelle anzupassen.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Der erste Schritt besteht darin, die erforderlichen Bibliotheken zu importieren. Wir werden Matplotlib und NumPy verwenden.

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

Die Sinuswellenfunktion definieren

Als nächstes definieren wir die Funktion, die unsere Sinuswelle erzeugen wird. Die Funktion nimmt zwei Parameter entgegen, Amplitude und Frequenz, und gibt die Sinuswelle zu einem bestimmten Zeitpunkt zurück.

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

Erstellen des Anfangsgraphen

Jetzt erstellen wir den Anfangsgraphen der Sinuswelle. Wir definieren die Anfangsparameter für die Amplitude und die Frequenz und zeichnen die Sinuswelle mit diesen Parametern.

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]')

Erstellen der Schieberegler

Wir werden nun die Schieberegler erstellen, die uns ermöglichen, die Frequenz und die Amplitude der Sinuswelle anzupassen. Wir werden einen horizontalen Schieberegler erstellen, um die Frequenz zu steuern, und einen vertikalen Schieberegler, um die Amplitude zu steuern.

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"
)

Erstellen der Aktualisierungsfunktion

Wir werden nun die Funktion erstellen, die die Sinuswelle jedes Mal aktualisiert, wenn wir die Schieberegler anpassen. Die Funktion nimmt die Werte der Amplitude- und Frequenz-Schieberegler entgegen und aktualisiert die Sinuswelle entsprechend.

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

Registrieren der Aktualisierungsfunktion bei den Schiebereglern

Als nächstes registrieren wir die Aktualisierungsfunktion bei jedem Schieberegler, sodass die Funktion jedes Mal aufgerufen wird, wenn wir die Schieberegler anpassen.

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

Erstellen der Zurücksetz-Schaltfläche

Wir werden nun eine Zurücksetz-Schaltfläche erstellen, die die Schieberegler auf ihre Anfangswerte zurücksetzt.

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)

Zeige den Graphen

Schließlich werden wir den Graphen mit den Schiebereglern und der Zurücksetz-Schaltfläche anzeigen.

plt.show()

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man Schieberegler erstellt und diese verwendet, um die Frequenz und Amplitude einer Sinuswelle zu steuern. Wir haben die Matplotlib-Bibliothek verwendet, um einen Graphen der Sinuswelle und der Schieberegler zu erstellen. Wir haben einen horizontalen Schieberegler erstellt, um die Frequenz zu steuern, und einen vertikalen Schieberegler, um die Amplitude zu steuern. Wir haben auch eine Zurücksetz-Schaltfläche erstellt, die die Schieberegler auf ihre Anfangswerte zurücksetzt.