/ / Matplotlib verwendet keine Latex-Schriftart, während text.usetex == True - Python, Matplotlib, Latex

Matplotlib verwendet keine Latexschrift während text.usetex == True - Python, Matplotlib, Latex

Ich möchte Etiketten für meine Zeichnungen mit der modernen Schriftart für Latex-Computer erstellen. Die einzige Möglichkeit, Matplotlib von der Verwendung der Latex-Schriftart zu überzeugen, ist das Einfügen von Folgendem:

title(r"$mathrm{test}$")

Das ist natürlich lächerlich, ich sage Latex dazuStarten Sie den Mathemodus und beenden Sie den Mathemodus vorübergehend, um die tatsächliche Zeichenfolge zu schreiben. Wie stelle ich sicher, dass alle Beschriftungen in Latex und nicht nur in Formeln angezeigt werden? Und wie kann ich sicherstellen, dass dies das Standardverhalten ist?

Ein minimales Arbeitsbeispiel ist wie folgt:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# use latex for font rendering
mpl.rcParams["text.usetex"] = True


x = np.linspace(-50,50,100)
y = np.sin(x)**2/x
plt.plot(x,y)

plt.xlabel(r"$mathrm{xlabel;with;LaTeX;font}$")
plt.ylabel(r"Not a latex font")
plt.show()

Daraus ergibt sich folgendes Ergebnis:

Darstellung mit falscher Darstellung von Latex-Schriftarten

Hier ist die x-Achse, wie die Etiketten angezeigt werden sollen. Wie stelle ich sicher, dass alle Beschriftungen so aussehen, ohne in den Mathematikmodus und wieder zurück gehen zu müssen?

Antworten:

32 für die Antwort № 1

Die Standardschriftart für Latex ist bekannt als Computer Modern:

from matplotlib import rc
import matplotlib.pylab as plt

rc("font", **{"family": "serif", "serif": ["Computer Modern"]})
rc("text", usetex=True)

x = plt.linspace(0,5)
plt.plot(x,plt.sin(x))
plt.ylabel(r"This is $sin(x)$", size=20)
plt.show()

Bildbeschreibung hier eingeben


9 für die Antwort № 2

Die markierte Antwort kann standardmäßig aktiviert werden, indem Sie einige Zeilen im Feld ändern matplotlibrc Datei:

text.usetex = True
font.family = serif
font.serif = cm

9 für die Antwort № 3

Ich verwende matplotlib 1.3.1 unter Mac OSX. Fügen Sie die folgenden Zeilen hinzu matplotlibrc funktioniert bei mir

text.usetex : True
font.family : serif
font.serif  : cm

Verwenden = führt zu a UserWarning: Illegal line