Einführung
In diesem Lab werden Sie durch das Erstellen eines Looking-Glass-Effekts mit Mausereignissen in Matplotlib geführt. Dieses Beispiel ermöglicht es Ihnen, Daten in einem kreisförmigen Bereich zu untersuchen, der durch Klicken und Ziehen verschoben werden kann.
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 während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
Wir müssen die Matplotlib-Bibliothek, die NumPy-Bibliothek und das Matplotlib-Patches-Modul importieren. Wir werden diese Bibliotheken verwenden, um unseren Looking-Glass-Effekt zu erstellen.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patches
Generieren von Zufallsdaten
Wir werden zwei Sets von Zufallsdaten mit NumPy generieren. Diese Daten werden geplottet, um einen Streudiagramm zu erstellen.
## Fixing random state for reproducibility
np.random.seed(19680801)
x, y = np.random.rand(2, 200)
Erstellen der Figur und der Achsen
Wir werden das Figur- und Achsenobjekt mit der Funktion subplots() erstellen. Wir werden auch einen gelben Kreis-Patch zum Achsenobjekt mit der Funktion patches.Circle() hinzufügen.
fig, ax = plt.subplots()
circ = patches.Circle((0.5, 0.5), 0.25, alpha=0.8, fc='yellow')
ax.add_patch(circ)
Plotten der Daten
Wir werden die in Schritt 2 generierten Zufallsdaten mit der Funktion plot() zweimal plotten. Der erste Plot wird einen Alpha-Wert von 0,2 haben und der zweite Plot wird einen Alpha-Wert von 1,0 haben und einen Clip-Pfad auf den gelben Kreis-Patch gesetzt haben.
ax.plot(x, y, alpha=0.2)
line, = ax.plot(x, y, alpha=1.0, clip_path=circ)
ax.set_title("Left click and drag to move looking glass")
Erstellen des Ereignishandlers
Wir werden eine Ereignishandler-Klasse erstellen, die die Mausereignisse behandelt, die erforderlich sind, um den gelben Kreis-Patch im Plot zu bewegen. Diese Klasse wird drei Methoden enthalten: on_press(), on_release() und on_move().
class EventHandler:
def __init__(self):
fig.canvas.mpl_connect('button_press_event', self.on_press)
fig.canvas.mpl_connect('button_release_event', self.on_release)
fig.canvas.mpl_connect('motion_notify_event', self.on_move)
self.x0, self.y0 = circ.center
self.pressevent = None
def on_press(self, event):
if event.inaxes!= ax:
return
if not circ.contains(event)[0]:
return
self.pressevent = event
def on_release(self, event):
self.pressevent = None
self.x0, self.y0 = circ.center
def on_move(self, event):
if self.pressevent is None or event.inaxes!= self.pressevent.inaxes:
return
dx = event.xdata - self.pressevent.xdata
dy = event.ydata - self.pressevent.ydata
circ.center = self.x0 + dx, self.y0 + dy
line.set_clip_path(circ)
fig.canvas.draw()
handler = EventHandler()
plt.show()
Ausführen des Programms
Führen Sie das Programm aus und klicken Sie mit der linken Maustaste und ziehen Sie den gelben Kreis-Patch, um ihn im Plot zu bewegen. Sie können diesen Effekt verwenden, um die Daten im Kreisbereich zu untersuchen.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man einen Looking-Glass-Effekt mit Mausereignissen in Matplotlib erstellt. Wir haben Zufallsdaten generiert, die Daten geplottet und eine Ereignishandler-Klasse erstellt, um Mausereignisse zu behandeln. Indem wir mit der linken Maustaste klicken und den gelben Kreis-Patch ziehen, konnten wir ihn im Plot bewegen und die Daten im Kreisbereich untersuchen.