Einführung
In Matplotlib kann die Position der Achsenkanten angepasst werden, um das Aussehen eines Diagramms anzupassen. In diesem Lab führen wir Sie durch den Prozess der Anpassung der Achsenkantenposition in Matplotlib.
VM-Tipps
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 öffnen.
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.
Importieren der erforderlichen Bibliotheken
In diesem Schritt importieren wir die erforderlichen Bibliotheken zum Erstellen unserer Diagramme.
import matplotlib.pyplot as plt
import numpy as np
Erstellen eines einfachen Diagramms
In diesem Schritt erstellen wir ein einfaches Diagramm, um die verschiedenen Optionen für die Achsenkantenposition in Matplotlib zu demonstrieren.
x = np.linspace(0, 2*np.pi, 100)
y = 2 * np.sin(x)
fig, ax_dict = plt.subplot_mosaic(
[['center', 'zero'],
['axes', 'data']]
)
fig.suptitle('Spine positions')
ax = ax_dict['center']
ax.set_title("'center'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('center')
ax.spines[['top', 'right']].set_visible(False)
ax = ax_dict['zero']
ax.set_title("'zero'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('zero')
ax.spines[['top', 'right']].set_visible(False)
ax = ax_dict['axes']
ax.set_title("'axes' (0.2, 0.2)")
ax.plot(x, y)
ax.spines.left.set_position(('axes', 0.2))
ax.spines.bottom.set_position(('axes', 0.2))
ax.spines[['top', 'right']].set_visible(False)
ax = ax_dict['data']
ax.set_title("'data' (1, 2)")
ax.plot(x, y)
ax.spines.left.set_position(('data', 1))
ax.spines.bottom.set_position(('data', 2))
ax.spines[['top', 'right']].set_visible(False)
Definieren einer Methode zum Anpassen der Achsenkantenpositionen
In diesem Schritt definieren wir eine Methode, die die Position der Achsenkanten basierend auf den angegebenen Achsenkantenpositionen anpasst.
def adjust_spines(ax, spines):
"""
Anpasst die Position der Achsenkanten basierend auf den angegebenen Achsenkantenpositionen.
Parameter:
ax (Axes): Das Matplotlib-Axes-Objekt, für das die Achsenkanten angepasst werden sollen.
spines (Liste von str): Die gewünschten Achsenkantenpositionen. Gültige Optionen sind 'left' (links), 'right' (rechts), 'top' (oben), 'bottom' (unten).
Rückgabe:
None
"""
for loc, spine in ax.spines.items():
if loc in spines:
spine.set_position(('outward', 10)) ## verschiebt die Achsenkante um 10 Punkte nach außen
else:
spine.set_color('none') ## zeichnet die Achsenkante nicht
## deaktiviert die Striche an Stellen, wo keine Achsenkante ist
if 'left' in spines:
ax.yaxis.set_ticks_position('left')
else:
ax.yaxis.set_ticks([])
if 'bottom' in spines:
ax.xaxis.set_ticks_position('bottom')
else:
ax.xaxis.set_ticks([])
Erstellen eines Diagramms mit der adjust_spines-Methode
In diesem Schritt erstellen wir ein Diagramm mit der adjust_spines-Methode, um zu demonstrieren, wie man die Achsenkantenpositionen anpasst.
fig = plt.figure()
x = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)
ax = fig.add_subplot(2, 2, 1)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left'])
ax = fig.add_subplot(2, 2, 2)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, [])
ax = fig.add_subplot(2, 2, 3)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left', 'bottom'])
ax = fig.add_subplot(2, 2, 4)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['bottom'])
plt.show()
Zusammenfassung
In diesem Lab haben wir gelernt, wie man in Matplotlib die Achsenkantenpositionen anpasst, indem man die Position der Achsenkanten mit der set_position-Methode setzt, und wie man eine Methode definiert, um die Achsenkantenpositionen basierend auf den gewünschten Achsenkantenpositionen anzupassen. Dies kann hilfreich sein, um das Aussehen von Diagrammen anzupassen und bestimmte Merkmale hervorzuheben.