Das Verwenden von Checkbuttons in Matplotlib

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.