Einführung
In diesem Lab wird gezeigt, wie man in Python Matplotlib Checkbuttons verwendet. Checkbuttons ermöglichen es Benutzern, visuelle Elemente mit Hilfe von Checkbuttons ein- und auszuschalten, ähnlich wie Checkboxen. Wir werden die CheckButtons-Funktion verwenden, um einen Plot mit drei verschiedenen Sinuswellen zu erstellen und die Möglichkeit zu haben, mit Checkbuttons zu wählen, welche Wellen angezeigt werden sollen.
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
Wir beginnen mit dem Import der erforderlichen Bibliotheken. Wir benötigen numpy zum Generieren der Daten und matplotlib zum Erstellen des Plots.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import CheckButtons
Daten generieren
Als nächstes werden wir die Daten für unseren Plot generieren. Wir werden mit numpy drei Sinuswellen mit unterschiedlichen Frequenzen erstellen.
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)
Den Plot erstellen
Jetzt werden wir den Plot mit matplotlib erstellen. Wir werden die drei Sinuswellen auf dem gleichen Graphen plotten und die Sichtbarkeit der ersten Welle auf False setzen, da wir sie zu Beginn versteckt lassen möchten.
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)
Checkbuttons hinzufügen
Wir werden nun die Checkbuttons zu unserem Plot mit der CheckButtons-Funktion hinzufügen. Wir werden die geplotteten Linien als Labels übergeben und die Anfangssichtbarkeit jeder Linie festlegen. Wir werden auch die Eigenschaften der Checkbuttons anpassen, um den Farben der geplotteten Linien zu entsprechen.
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},
)
Callback-Funktion definieren
Wir müssen eine Callback-Funktion für die Checkbuttons definieren. Diese Funktion wird jedes Mal aufgerufen, wenn eine Checkbox angeklickt wird. Wir werden diese Funktion verwenden, um die Sichtbarkeit der entsprechenden Linie im Plot umzuschalten.
def callback(label):
ln = lines_by_label[label]
ln.set_visible(not ln.get_visible())
ln.figure.canvas.draw_idle()
check.on_clicked(callback)
Zeige den Plot an
Schließlich werden wir den Plot mit der show()-Funktion anzeigen.
plt.show()
Zusammenfassung
In diesem Lab haben wir gelernt, wie man in Python Matplotlib Checkbuttons verwendet. Wir haben einen Plot mit drei verschiedenen Sinuswellen erstellt und die Möglichkeit, mit den Checkbuttons zu wählen, welche Wellen angezeigt werden sollen. Wir haben die CheckButtons-Funktion verwendet, um die Buttons zu erstellen, und eine Callback-Funktion definiert, um die Sichtbarkeit der entsprechenden Linie im Plot umzuschalten.