Angepasste Matplotlib-Konturbeschriftungen

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 diesem Tutorial lernen wir, wie man in Matplotlib Konturbeschriftungen erstellt. Konturbeschriftungen werden verwendet, um die Konturen in einem Konturplot zu beschriften. In diesem Tutorial werden einige fortgeschrittene Techniken zur Erstellung benutzerdefinierter Konturbeschriftungen behandelt.

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.

Definieren unserer Fläche

Wir beginnen, indem wir unsere Fläche mit numpy und matplotlib definieren. Dies wird uns einen Datensatz liefern, mit dem wir arbeiten können.

import matplotlib.pyplot as plt
import numpy as np

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

Erstellen von Konturbeschriftungen mit benutzerdefinierten Levelformatter

Wir werden nun Konturbeschriftungen mit benutzerdefinierten Levelformatter erstellen. Dies wird uns ermöglichen, die Beschriftungen auf eine bestimmte Weise zu formatieren. In diesem Fall werden wir die Nachkommastellen abschneiden und ein Prozentzeichen hinzufügen.

def fmt(x):
    s = f"{x:.1f}"
    if s.endswith("0"):
        s = f"{x:.0f}"
    return rf"{s} \%" if plt.rcParams["text.usetex"] else f"{s} %"

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, CS.levels, inline=True, fmt=fmt, fontsize=10)

Bezeichnen von Konturen mit beliebigen Zeichenketten mithilfe eines Wörterbuchs

Wir können auch Konturen mit beliebigen Zeichenketten mithilfe eines Wörterbuchs bezeichnen. Dies wird uns ermöglichen, die Konturen mit benutzerdefinierten Bezeichnungen zu versehen. In diesem Beispiel werden wir eine Liste von Zeichenketten verwenden, um die Konturen zu bezeichnen.

fig1, ax1 = plt.subplots()
CS1 = ax1.contour(X, Y, Z)

fmt = {}
strs = ['first','second', 'third', 'fourth', 'fifth','sixth','seventh']
for l, s in zip(CS1.levels, strs):
    fmt[l] = s

ax1.clabel(CS1, CS1.levels[::2], inline=True, fmt=fmt, fontsize=10)

Verwenden eines Formatters

Wir können auch einen Formatter verwenden, um die Konturbeschriftungen zu formatieren. Dies wird uns ermöglichen, die Beschriftungen auf eine bestimmte Weise zu formatieren. In diesem Beispiel werden wir einen LogFormatterMathtext verwenden, um die Beschriftungen zu formatieren.

fig2, ax2 = plt.subplots()
CS2 = ax2.contour(X, Y, 100**Z, locator=plt.LogLocator())
fmt = ticker.LogFormatterMathtext()
fmt.create_dummy_axis()
ax2.clabel(CS2, CS2.levels, fmt=fmt)
ax2.set_title("$100^Z$")

plt.show()

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man in Matplotlib Konturbeschriftungen erstellt. Wir haben einige fortgeschrittene Techniken für die Erstellung benutzerdefinierter Konturbeschriftungen behandelt, darunter benutzerdefinierte Levelformatter, das Bezeichnen von Konturen mit beliebigen Zeichenketten und das Verwenden eines Formatters, um die Konturbeschriftungen zu formatieren. Diese Techniken können nützlich sein, um Visualisierungen zu erstellen, die sowohl informativ als auch ästhetisch ansprechend sind.