Einführung
In diesem Tutorial lernen Sie, wie Sie mit matplotlib einen Zoom-Effekt erstellen. Der Zoom-Effekt ermöglicht es Ihnen, zwischen zwei verschiedenen Achsen zu navigieren und einzuzoomen.
Tipps für virtuelle Maschinen (VM)
Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.
Wenn Sie während des Lernens Probleme haben, können Sie Labby um Hilfe bitten. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
In diesem Schritt importieren wir die erforderlichen Bibliotheken für dieses Tutorial. Wir importieren matplotlib und die relevanten Bibliotheken aus mpl_toolkits.axes_grid1.
import matplotlib.pyplot as plt
from matplotlib.transforms import (Bbox, TransformedBbox,
blended_transform_factory)
from mpl_toolkits.axes_grid1.inset_locator import (BboxConnector,
BboxConnectorPatch,
BboxPatch)
Definieren der Verbindung zwischen den Achsen
In diesem Schritt definieren wir die Verbindung zwischen den beiden Achsen. Diese Funktion nimmt zwei Achsen als Eingaben sowie die minimalen und maximalen Werte für die x-Achse entgegen. Anschließend erstellt sie eine Begrenzungsbox und verbindet die beiden Achsen.
def zoom_effect01(ax1, ax2, xmin, xmax, **kwargs):
bbox = Bbox.from_extents(xmin, 0, xmax, 1)
mybbox1 = TransformedBbox(bbox, ax1.get_xaxis_transform())
mybbox2 = TransformedBbox(bbox, ax2.get_xaxis_transform())
prop_patches = {**kwargs, "ec": "none", "alpha": 0.2}
c1, c2, bbox_patch1, bbox_patch2, p = connect_bbox(
mybbox1, mybbox2,
loc1a=3, loc2a=2, loc1b=4, loc2b=1,
prop_lines=kwargs, prop_patches=prop_patches)
ax1.add_patch(bbox_patch1)
ax2.add_patch(bbox_patch2)
ax2.add_patch(c1)
ax2.add_patch(c2)
ax2.add_patch(p)
return c1, c2, bbox_patch1, bbox_patch2, p
Erstellen der zweiten vergrößerten Achse
In diesem Schritt erstellen wir die zweite vergrößerte Achse. Diese Funktion nimmt zwei Achsen als Eingaben entgegen. Anschließend erstellt sie eine Begrenzungsbox für die zweite Achse und verbindet sie mit der ersten Achse.
def zoom_effect02(ax1, ax2, **kwargs):
tt = ax1.transScale + (ax1.transLimits + ax2.transAxes)
trans = blended_transform_factory(ax2.transData, tt)
mybbox1 = ax1.bbox
mybbox2 = TransformedBbox(ax1.viewLim, trans)
prop_patches = {**kwargs, "ec": "none", "alpha": 0.2}
c1, c2, bbox_patch1, bbox_patch2, p = connect_bbox(
mybbox1, mybbox2,
loc1a=3, loc2a=2, loc1b=4, loc2b=1,
prop_lines=kwargs, prop_patches=prop_patches)
ax1.add_patch(bbox_patch1)
ax2.add_patch(bbox_patch2)
ax2.add_patch(c1)
ax2.add_patch(c2)
ax2.add_patch(p)
return c1, c2, bbox_patch1, bbox_patch2, p
Verbinden der Achsen
In diesem Schritt verbinden wir die Achsen und erstellen den Zoom-Effekt. Wir erstellen eine Figur mit vier Achsen und verbinden sie mit den Funktionen zoom_effect01 und zoom_effect02.
axs = plt.figure().subplot_mosaic([
["zoom1", "zoom2"],
["main", "main"],
])
axs["main"].set(xlim=(0, 5))
zoom_effect01(axs["zoom1"], axs["main"], 0.2, 0.8)
axs["zoom2"].set(xlim=(2, 3))
zoom_effect02(axs["zoom2"], axs["main"])
plt.show()
Zusammenfassung
In diesem Tutorial haben wir gelernt, wie man einen Zoom-Effekt mit matplotlib erstellt. Wir haben zunächst eine Funktion definiert, um die Achsen zu verbinden, und dann eine zweite Funktion erstellt, um die zweite vergrößerte Achse zu erstellen. Schließlich haben wir die Achsen verbunden und den Zoom-Effekt erzeugt.