HOWTO · Matplotlib
Latex-Formeln in Matplotlib
Dieses Tutorial erklärt, wie man LaTex-Formeln oder -Gleichungen in Matplotlib darstellen kann.
Auf dieser Seite
Mathematische Ausdrücke in Titeln, Achsenbeschriftungen, Legenden und Anmerkungen lassen sich mit Matplotlib setzen. Das integrierte Mathtext verarbeitet viele gängige Formeln, ohne dass eine separate TeX-Installation erforderlich ist. Für eine umfassendere Dokumentdarstellung mit LaTeX aktivieren Sie den externen Renderer mit text.usetex; dafür sind zusätzliche Systemabhängigkeiten nötig. Sofern nicht anders angegeben, verwenden die folgenden Beispiele Mathtext.
Mathematische Texte in Matplotlib darstellen
Setzen Sie einen mathematischen Ausdruck zwischen Dollarzeichen und verwenden Sie einen rohen Python-String mit dem Präfix r, damit Backslashes unverändert beim Parser ankommen. Das ist für Befehle wie \sin und griechische Symbole hilfreich. Im selben Label kann neben einem mathematischen Ausdruck auch gewöhnlicher Text stehen. Mathtext ist standardmäßig aktiviert und deckt gängige Notation wie Brüche, Indizes, Exponenten und viele Symbole ab. Es implementiert jedoch nicht jedes Paket und jeden Befehl von LaTeX vollständig.
Führen Sie dieses Beispiel aus, um eine Sinuskurve mit einer Formel in der y-Achsenbeschriftung und der Legende zu zeichnen. Die im Code gesetzten Titel und Beschriftungen bleiben Englisch.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y, label=r"$\sin(x)$")
ax.set_xlabel("x")
ax.set_ylabel(r"$\sin(x)$")
ax.set_title("Sine curve with mathtext")
ax.legend()
fig.tight_layout()
plt.show()
Die Sinuskurve verwendet das integrierte Mathtext von Matplotlib. Die dargestellten Daten und Formelbeschriftungen sind im Code oben weiterhin verfügbar.
Die Daten umfassen eine volle Periode von 0 bis 2π; np.sin(x) liefert die y-Werte. Der rohe String bewahrt den Backslash in \sin. Die Dollarzeichen markieren den mathematischen Teil der Beschriftung. Ohne sie behandelt Matplotlib den Text als gewöhnliche Zeichen. Wird eine Formel nicht dargestellt, prüfen Sie, ob die Trennzeichen paarweise vorhanden sind und Mathtext jeden verwendeten Befehl unterstützt.
Externes Rendering mit LaTeX aktivieren
Verwenden Sie externes Rendering, wenn Sie Funktionen von LaTeX benötigen, die über Mathtext hinausgehen, oder wenn der Text im Diagramm der TeX-Typografie eines Dokuments entsprechen soll. Setzen Sie text.usetex, bevor Sie die Abbildung erstellen. Mit plt.rcParams["text.usetex"] = True wird es beispielsweise für anschließend erstellte Abbildungen aktiviert. Setzen Sie den Wert wieder auf False, wenn Sie erneut Mathtext verwenden möchten. Alternativ lässt sich die Einstellung während des Plot-Aufrufs mit plt.rc_context({"text.usetex": True}) begrenzen.
Für das externe Rendering benötigen Sie eine kompatible Installation von LaTeX und die Hilfsprogramme, die Matplotlib voraussetzt, darunter dvipng und – abhängig von Plattform und Ausgabeweg – Ghostscript. Installieren Sie kompatible Pakete für Ihr Betriebssystem und sorgen Sie dafür, dass deren ausführbare Dateien über PATH auffindbar sind. Die genauen Paketnamen und Voraussetzungen können je nach Plattform und Konfiguration von Matplotlib variieren. Prüfen Sie bei Darstellungsfehlern die Fehlermeldung und die Dokumentation für Ihre installierte Version von Matplotlib. Eine fehlende ausführbare Datei, ein nicht unterstütztes Paket oder ein nicht unterstützter Befehl sowie ein TeX-Kompilierungsfehler können die Textdarstellung verhindern. Aktivieren Sie diese Option nicht nur für gewöhnliche Gleichungen: Mit Mathtext entfallen diese externen Abhängigkeiten.
Die offiziellen Angaben zu Abhängigkeiten und Einrichtung finden Sie in der Dokumentation von Matplotlib unter Dokumentation zur Textformatierung mit LaTeX. Beachten Sie die Einschränkungen für Plattform und Ausgabeweg, da die erforderlichen Hilfsprogramme von der jeweiligen Umgebung abhängen.
Die Einstellung ändert, wie Matplotlib Text darstellt, nicht aber die Python-Strings selbst. Verwenden Sie für mathematische Ausdrücke weiterhin rohe Strings mit Dollarzeichen als Begrenzern und testen Sie repräsentative Beschriftungen in der Umgebung, in der die endgültige Abbildung erstellt wird. Dieser Artikel setzt keine bestimmte Version von LaTeX oder Ghostscript voraus.
Griechische Buchstaben und weitere Symbole verwenden
Mathtext erkennt Befehle für griechische Buchstaben und die Syntax für Exponenten innerhalb von Dollarzeichen. Beispielsweise stellt r"$\alpha^2$" Alpha zum Quadrat dar. Verwenden Sie dieselbe Schreibweise für Beschriftungen und Legendeneinträge. Erklärende Wörter außerhalb der mathematischen Notation lassen Sie außerhalb der Dollarzeichen.
Dieses Beispiel vergleicht α, α² und α³ und verwendet Alpha auf der horizontalen Achse. Die im Code gesetzten Titel und Beschriftungen bleiben Englisch.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
import matplotlib.pyplot as plt
alpha = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
ax.plot(alpha, alpha, label=r"$\alpha$")
ax.plot(alpha, alpha ** 2, label=r"$\alpha^2$")
ax.plot(alpha, alpha ** 3, label=r"$\alpha^3$")
ax.set_xlabel(r"$\alpha$")
ax.set_ylabel("Value")
ax.set_title("Greek letters and superscripts")
ax.legend()
fig.tight_layout()
plt.show()
Die Legende zeigt die drei Potenzen mit Mathtext. Der Code und die Kurvenwerte oben sind auswählbar.
Das Mathtext von Matplotlib umfasst viele gängige Symbole, aber der Befehlssatz unterscheidet sich von einer vollständigen Installation von LaTeX. Wird ein Befehl nicht unterstützt, vereinfachen Sie den Ausdruck auf unterstützte Mathtext-Notation oder verwenden Sie externes Rendering, wenn die gewünschte Notation Funktionen von LaTeX voraussetzt. Setzen Sie jeden vollständigen Ausdruck zwischen ein zusammengehöriges Paar Dollarzeichen, damit der Parser mathematische Notation von gewöhnlichem Beschriftungstext unterscheiden kann.
Mathtext anpassen und Anmerkungen hinzufügen
Legen Sie die Textgröße für einzelne Elemente mit Argumenten wie fontsize=14 in ax.set_title, ax.set_xlabel oder ax.set_ylabel fest. Für einen einheitlichen Stil im gesamten Diagramm verwenden Sie über plt.rcParams die Einstellungen font.size, axes.titlesize und axes.labelsize von Matplotlib. Beispielsweise ändert plt.rcParams["font.size"] = 12 die grundlegende Textgröße. Eine Serifenschrift lässt sich mit plt.rcParams["font.family"] = "serif" anfordern. Welche Schriften verfügbar sind, hängt vom jeweiligen Rechner ab. Auch das externe Rendering mit LaTeX hat eine eigene Schriftkonfiguration. Prüfen Sie daher die Abbildung in ihrer endgültigen Größe.
Mit ax.annotate platzieren Sie eine Anmerkung an einer Datenkoordinate und können optional einen Pfeil auf diesen Punkt zeichnen. Das Maximum einer Sinuskurve liegt ungefähr bei (np.pi / 2, 1). Übergeben Sie diesen Punkt als xy, wählen Sie für die Anmerkung eine separate Position mit xytext und fügen Sie mit arrowprops={"arrowstyle": "->"} einen Pfeil hinzu. Der Anmerkungstext kann Fließtext und Mathematik kombinieren, zum Beispiel r"Peak: $\sin(x)=1$". So bleibt die Beschriftung lesbar und verweist zugleich auf das besprochene Merkmal.
Sowohl Mathtext als auch externes Rendering mit LaTeX stellen Text in der Abbildung dar; die zugrunde liegenden numerischen Daten verändern sie nicht. Verwenden Sie Beschreibungen und Einheiten möglichst als gewöhnlichen Text, reservieren Sie mathematische Begrenzer für Notation und halten Sie Formeln in Legenden kurz, damit die Einträge lesbar bleiben. Muss ein Diagramm exakt der Typografie einer Veröffentlichung entsprechen, prüfen Sie es mit denselben Schriften, demselben Renderer und demselben Ausgabeformat wie im endgültigen Dokument.