Einführung
In diesem Lab lernst du, wie du mit Matplotlib Schieberegler mit diskreten Werten erstellst. Du wirst lernen, wie du die Werte eines Schiebereglers auf eine Menge erlaubter Werte einschränkst und die Schiebereglerwerte auf diese erlaubten Werte snapst.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal musst du 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 du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Importiere erforderliche Bibliotheken
In diesem Schritt importierst du die erforderlichen Bibliotheken für dieses Lab. Du wirst Matplotlib verwenden, um die Schieberegler zu erstellen, und NumPy, um die Daten zu generieren, die geplottet werden sollen.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button, Slider
Generiere Daten
In diesem Schritt wirst du die Daten generieren, die geplottet werden sollen. Du wirst eine Sinuswelle mit einer Frequenz von 3 Hz und einer Amplitude von 5 erstellen.
t = np.arange(0.0, 1.0, 0.001)
a0 = 5
f0 = 3
s = a0 * np.sin(2 * np.pi * f0 * t)
Erzeuge die Figur und die Achsen
In diesem Schritt wirst du die Figur und die Achsen für das Diagramm erstellen. Du wirst auch die Position der Achsen anpassen, um Platz für die Schieberegler zu schaffen.
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])
Definiere erlaubte Werte für den Amplitude-Schieberegler
In diesem Schritt wirst du die erlaubten Werte für den Amplitude-Schieberegler definieren. Der Amplitude-Schieberegler wird diese Werte verwenden, um auf den nächstgelegenen erlaubten Wert zu springen.
## define the values to use for snapping
allowed_amplitudes = np.concatenate([np.linspace(.1, 5, 100), [6, 7, 8, 9]])
Erstelle die Schieberegler
In diesem Schritt wirst du die Schieberegler erstellen. Du wirst einen Schieberegler für die Amplitude und einen Schieberegler für die Frequenz erstellen.
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' ## Entferne die Linie, die die valinit-Position markiert.
)
Erstelle die Aktualisierungsfunktion
In diesem Schritt wirst du die Aktualisierungsfunktion für die Schieberegler erstellen. Diese Funktion wird das Diagramm aktualisieren, wenn die Werte der Schieberegler geändert werden.
def update(val):
amp = samp.val
freq = sfreq.val
l.set_ydata(amp*np.sin(2*np.pi*freq*t))
fig.canvas.draw_idle()
Verbinde die Schieberegler mit der Aktualisierungsfunktion
In diesem Schritt wirst du die Schieberegler mit der Aktualisierungsfunktion verbinden. Dadurch wird sichergestellt, dass das Diagramm aktualisiert wird, wenn die Werte der Schieberegler geändert werden.
sfreq.on_changed(update)
samp.on_changed(update)
Erstelle die Zurücksetz-Schaltfläche
In diesem Schritt wirst du eine Zurücksetz-Schaltfläche für die Schieberegler erstellen. Wenn die Schaltfläche betätigt wird, wird sie die Werte der Schieberegler auf ihre Anfangswerte zurücksetzen.
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)
Zeige das Diagramm an
In diesem Schritt wirst du das Diagramm anzeigen.
plt.show()
Zusammenfassung
In diesem Lab hast du gelernt, wie du mit Matplotlib Schieberegler mit diskreten Werten erstellst. Du hast gelernt, wie du die Werte eines Schiebereglers auf eine Menge erlaubter Werte einschränkst und die Schiebereglerwerte auf diese erlaubten Werte snapst. Du hast auch gelernt, wie du eine Zurücksetz-Schaltfläche für die Schieberegler erstellst.