Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Textwiedergabe mit LaTeX #
Matplotlib kann LaTeX verwenden, um Text zu rendern. Dies wird durch die Einstellung
in Ihren rcParams aktiviert oder indem Sie die Eigenschaft für einzelne Objekte auf True setzen. Die Textverarbeitung durch LaTeX ist langsamer als Matplotlibs sehr leistungsfähiges mathtext , aber flexibler, da verschiedene LaTeX-Pakete (Schriftpakete, Mathematikpakete usw.) verwendet werden können. Die Ergebnisse können verblüffend sein, insbesondere wenn Sie darauf achten, in Ihren Abbildungen dieselben Schriftarten wie im Hauptdokument zu verwenden.text.usetex : True
usetex
Text
Die LaTeX-Unterstützung von Matplotlib erfordert eine funktionierende LaTeX - Installation. Für die *Agg-Backends ist zusätzlich dvipng erforderlich; für das PS-Backend
werden zusätzlich PSfrag , dvips und Ghostscript benötigt. Wenn LuaTeX für die PDF- und SVG-Backends vorhanden ist, wird es verwendet, um einige Nachbearbeitungsschritte zu beschleunigen, aber beachten Sie, dass es nicht verwendet wird, um die TeX-Zeichenfolge selbst zu analysieren (es wird nur LaTeX unterstützt). Die ausführbaren Dateien für diese externen Abhängigkeiten müssen sich alle auf Ihrem befindenPATH
.
Es wird nur eine kleine Anzahl von Schriftfamilien (definiert durch das PSNFSS- Schema) unterstützt. Sie sind hier aufgelistet, zusammen mit den entsprechenden LaTeX-Befehlen zur Schriftauswahl und LaTeX-Paketen, die automatisch verwendet werden.
generische Familie |
Schriftarten |
---|---|
Serife ( |
Computer Modern Roman, Palatino ( |
serifenlos ( |
Computer Modern Serif, Helvetica ( |
kursiv ( |
Zapf Kanzlei ( |
Monospace ( |
Computer Moderne Schreibmaschine, Kurier ( |
Die Standardschriftfamilie (für die kein LaTeX-Paket geladen werden muss) ist Computer Modern. Alle anderen Familien sind Adobe-Schriftarten. Times und Palatino haben jeweils ihre eigenen begleitenden mathematischen Schriftarten, während die anderen Serifenschriften von Adobe die mathematischen Schriftarten von Computer Modern verwenden.
Um LaTeX zu aktivieren und eine Schriftart auszuwählen, verwenden Sie z. B.:
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
oder äquivalent, setzen Sie Ihre matplotlibrc auf:
text.usetex : true
font.family : Helvetica
Es ist auch möglich, stattdessen font.family
einen der generischen Familiennamen festzulegen und dann die entsprechende generische Familie zu konfigurieren; z.B:
plt.rcParams.update({
"text.usetex": True,
"font.family": "sans-serif",
"font.sans-serif": "Helvetica",
})
(Dies war der erforderliche Ansatz bis Matplotlib 3.5).
Hier ist das Standardbeispiel, Rendern mathematischer Gleichungen mit TeX :
Beachten Sie, dass der mathematische Anzeigemodus ( ) nicht unterstützt wird, aber das Hinzufügen des Befehls , wie in der obigen Demo, zu denselben Ergebnissen führt.$$ e=mc^2 $$
\displaystyle
Nicht-ASCII-Zeichen (z. B. das Gradzeichen im y-Label oben) werden unterstützt, soweit sie von inputenc unterstützt werden .
Notiz
Aus Gründen der Konsistenz mit dem Nicht-Usetex-Fall verwendet Matplotlib Sonderfälle für Zeilenumbrüche, sodass einzelne Zeilenumbrüche zu Zeilenumbrüchen führen (und nicht als Leerzeichen in Standard-LaTeX interpretiert werden).
Matplotlib verwendet das Underscore -Paket, damit Unterstriche ( _
) "wie sie sind" im Textmodus gedruckt werden (anstatt wie in Standard-LaTeX einen Fehler zu verursachen). Unterstriche führen immer noch tiefgestellte Zeichen im mathematischen Modus ein.
Notiz
Bestimmte Zeichen erfordern in TeX ein spezielles Escapezeichen, wie zum Beispiel:
# $ % & ~ ^ \ { } \( \) \[ \]
Daher verhalten sich diese Zeichen je nach
rcParams["text.usetex"]
(Standard: False
) unterschiedlich. Wie oben erwähnt, müssen Unterstriche ( _
) außerhalb des mathematischen Modus nicht maskiert werden.
PostScript-Optionen #
Um gekapselte PostScript-Dateien (EPS) zu erzeugen, die in ein neues LaTeX-Dokument eingebettet werden können, besteht das Standardverhalten von Matplotlib darin, die Ausgabe zu destillieren, wodurch einige von LaTeX verwendete PostScript-Operatoren entfernt werden, die in einer EPS-Datei illegal sind. Dieser Schritt führt zu Ergebnissen, die für einige Benutzer möglicherweise nicht akzeptabel sind, da der Text grob gerastert und in Bitmaps konvertiert wird, die nicht wie Standard-PostScript skalierbar sind, und der Text nicht durchsuchbar ist. Eine Problemumgehung besteht darin, rcParams["ps.distiller.res"]
(Standard: 6000
) in Ihren rc-Einstellungen auf einen höheren Wert (vielleicht 6000) zu setzen, was größere Dateien erzeugt, aber möglicherweise besser aussieht und angemessen skaliert. Eine bessere Problemumgehung, die Poppler oder Xpdf erfordert , kann aktiviert werden, indem rcParams["ps.usedistiller"]
(Standard: None
) auf geändert wirdxpdf
. Diese Alternative erzeugt PostScript ohne Rasterung von Text, sodass es richtig skaliert, in Adobe Illustrator bearbeitet und Text in PDF-Dokumenten durchsucht werden kann.
Mögliche Aufhänger #
Unter Windows ist die
PATH
Die Umgebungsvariable muss möglicherweise geändert werden, um die Verzeichnisse einzuschließen, die die ausführbaren Dateien latex, dvipng und ghostscript enthalten. Einzelheiten finden Sie unter Umgebungsvariablen und Festlegen von Umgebungsvariablen in Windows .Wenn Sie MiKTeX mit Computer Modern-Schriftarten verwenden und ungewöhnliche *Agg- und PNG-Ergebnisse erhalten, gehen Sie zu MiKTeX/Optionen und aktualisieren Sie Ihre Formatdateien
Auf Ubuntu und Gentoo wird die texlive-Basisinstallation nicht mit dem type1cm-Paket ausgeliefert. Möglicherweise müssen Sie einige der zusätzlichen Pakete installieren, um alle Extras zu erhalten, die mit anderen LaTeX-Distributionen gebündelt sind.
Es wurden einige Fortschritte erzielt, sodass Matplotlib die DVI-Dateien direkt für das Textlayout verwendet. Dadurch kann LaTeX für das Textlayout mit den pdf- und svg-Backends sowie den *Agg- und PS-Backends verwendet werden. In Zukunft kann eine LaTeX-Installation die einzige externe Abhängigkeit sein.
Fehlerbehebung #
Versuchen Sie, Ihr
.matplotlib/tex.cache
Verzeichnis zu löschen. Wenn Sie nicht wissen, wo Sie es finden.matplotlib
können, sehen Sie sich die matplotlib-Konfiguration und die Cache-Verzeichnisspeicherorte an .Stellen Sie sicher, dass LaTeX, dvipng und Ghostscript funktionieren und auf Ihrem
PATH
.Stellen Sie sicher, dass das, was Sie zu tun versuchen, in einem LaTeX-Dokument möglich ist, dass Ihre LaTeX-Syntax gültig ist und dass Sie ggf. rohe Zeichenfolgen verwenden, um unbeabsichtigte Escape-Sequenzen zu vermeiden.
rcParams["text.latex.preamble"]
(Standard:''
) wird nicht offiziell unterstützt. Diese Option bietet viel Flexibilität und viele Möglichkeiten, Probleme zu verursachen. Bitte deaktivieren Sie diese Option, bevor Sie Probleme an die Mailingliste melden.Wenn Sie weiterhin Hilfe benötigen, lesen Sie bitte Hilfe erhalten .