Matplotlib Achsenkantenpositionierung

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 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.