Matplotlib Tick Formatter Tutorial

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

Matplotlib ist eine weit verbreitete Python-Bibliothek zur Erstellung von Graphen, die hochwertige 2D- und 3D-Grafiken erzeugt. In diesem Lab werden wir lernen, wie in Matplotlib Tick-Formatter verwendet werden.

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.

Importieren von Matplotlib und Einrichten des Graphen

Zunächst müssen wir die Matplotlib-Bibliothek importieren und den Graphen einrichten. Wir werden einen leeren Graphen mit einer y-Achse und einer x-Achse erstellen. Wir werden auch die Achse so konfigurieren, dass nur die untere Spur sichtbar ist, die Tick-Positionen festlegen und die Tick-Länge definieren.

import matplotlib.pyplot as plt
from matplotlib import ticker

def setup(ax, title):
    """Set up common parameters for the Axes in the example."""
    ## nur die untere Spur anzeigen
    ax.yaxis.set_major_locator(ticker.NullLocator())
    ax.spines[['left', 'right', 'top']].set_visible(False)

    ## Tick-Positionen definieren
    ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
    ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))

    ax.xaxis.set_ticks_position('bottom')
    ax.tick_params(which='major', width=1.00, length=5)
    ax.tick_params(which='minor', width=0.75, length=2.5, labelsize=10)
    ax.set_xlim(0, 5)
    ax.set_ylim(0, 1)
    ax.text(0.0, 0.2, title, transform=ax.transAxes,
            fontsize=14, fontname='Monospace', color='tab:blue')


fig, ax = plt.subplots(figsize=(8, 2))
setup(ax, "Tick Formatters")

Einfache Formatierung

In diesem Schritt werden wir zeigen, wie eine einfache Formatierung verwendet wird, indem eine Zeichenfolge oder eine Funktion an ~.Axis.set_major_formatter oder ~.Axis.set_minor_formatter übergeben wird. Wir werden zwei Graphen erstellen, einen mit einem Zeichenfolgen-Formatter und einen mit einem Funktions-Formatter.

fig0, axs0 = plt.subplots(2, 1, figsize=(8, 2))
fig0.suptitle('Simple Formatting')

## Eine ``str``, die die Syntax der Formatierungszeichenfolgefunktion verwendet,
## kann direkt als Formatter verwendet werden. Die Variable ``x`` ist der Tick-Wert
## und die Variable ``pos`` ist die Tick-Position. Dies erstellt automatisch einen
## StrMethodFormatter.
setup(axs0[0], title="'{x} km'")
axs0[0].xaxis.set_major_formatter('{x} km')

## Eine Funktion kann ebenfalls direkt als Formatter verwendet werden. Die Funktion
## muss zwei Argumente akzeptieren: ``x`` für den Tick-Wert und ``pos`` für die
## Tick-Position und muss eine ``str`` zurückgeben. Dies erstellt automatisch einen
## FuncFormatter.
setup(axs0[1], title="lambda x, pos: str(x-5)")
axs0[1].xaxis.set_major_formatter(lambda x, pos: str(x-5))

fig0.tight_layout()

Formatierung von Formatter-Objekten

In diesem Schritt werden wir .Formatter-Objekte verwenden, um die Tick-Markierungen zu formatieren. Wir werden sieben Graphen erstellen, wobei jeder einen anderen Formatter verwendet.

fig1, axs1 = plt.subplots(7, 1, figsize=(8, 6))
fig1.suptitle('Formatter Object Formatting')

## Null-Formatter
setup(axs1[0], title="NullFormatter()")
axs1[0].xaxis.set_major_formatter(ticker.NullFormatter())

## StrMethod-Formatter
setup(axs1[1], title="StrMethodFormatter('{x:.3f}')")
axs1[1].xaxis.set_major_formatter(ticker.StrMethodFormatter("{x:.3f}"))

## FuncFormatter kann als Dekorator verwendet werden
@ticker.FuncFormatter
def major_formatter(x, pos):
    return f'[{x:.2f}]'

setup(axs1[2], title='FuncFormatter("[{:.2f}]".format)')
axs1[2].xaxis.set_major_formatter(major_formatter)

## Fixed-Formatter
setup(axs1[3], title="FixedFormatter(['A', 'B', 'C',...])")
## FixedFormatter sollte nur zusammen mit FixedLocator verwendet werden.
## Andernfalls kann man nicht sicher sein, wo die Labels landen werden.
positions = [0, 1, 2, 3, 4, 5]
labels = ['A', 'B', 'C', 'D', 'E', 'F']
axs1[3].xaxis.set_major_locator(ticker.FixedLocator(positions))
axs1[3].xaxis.set_major_formatter(ticker.FixedFormatter(labels))

## Scalar-Formatter
setup(axs1[4], title="ScalarFormatter()")
axs1[4].xaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True))

## FormatStr-Formatter
setup(axs1[5], title="FormatStrFormatter('#%d')")
axs1[5].xaxis.set_major_formatter(ticker.FormatStrFormatter("#%d"))

## Prozent-Formatter
setup(axs1[6], title="PercentFormatter(xmax=5)")
axs1[6].xaxis.set_major_formatter(ticker.PercentFormatter(xmax=5))

fig1.tight_layout()

Anzeige der Graphen

Schließlich werden wir die Graphen mit plt.show() anzeigen.

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Matplotlib Tick-Formatter verwendet, indem man eine Zeichenfolge oder eine Funktion an ~.Axis.set_major_formatter oder ~.Axis.set_minor_formatter übergibt, oder indem man eine Instanz einer der verschiedenen ~.ticker.Formatter-Klassen erstellt und diese an ~.Axis.set_major_formatter oder ~.Axis.set_minor_formatter übergibt. Wir haben auch gelernt, wie man einen Graphen mit Tick-Positionen, Tick-Länge und einem Titel einrichtet.