Chcę tworzyć etykiety na moich działkach za pomocą nowoczesnej czcionki komputerowej lateksu. Jednak jedynym sposobem na przekonanie matplotlib do używania czcionki lateksowej jest wstawienie czegoś takiego jak:
title(r"$mathrm{test}$")
To oczywiście śmieszne, polecam lateksowiuruchom tryb matematyki, a następnie wyjdź z trybu matematycznego tymczasowo, aby zapisać rzeczywisty ciąg znaków. Jak upewnić się, że wszystkie etykiety są renderowane w lateksie, zamiast tylko formuł? I jak mogę się upewnić, że będzie to zachowanie domyślne?
Minimalny przykład roboczy jest następujący:
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()
Daje to następujący wynik:
Tutaj oś x jest tym, w jaki sposób chcę, aby etykiety pojawiały się. Jak mogę się upewnić, że wszystkie etykiety pojawiają się w ten sposób bez konieczności przechodzenia do trybu matematycznego iz powrotem?
Odpowiedzi:
32 dla odpowiedzi nr 1Domyślna czcionka Latex jest znana jako 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()
9 dla odpowiedzi nr 2
Zaznaczoną odpowiedź można włączyć domyślnie, zmieniając kilka linii w matplotlibrc
plik:
text.usetex = True
font.family = serif
font.serif = cm
9 dla odpowiedzi nr 3
Używam matplotlib 1.3.1 na Mac OSX, dodać następujące wiersze w matplotlibrc
pracuje dla mnie
text.usetex : True
font.family : serif
font.serif : cm
Za pomocą =
prowadzi do UserWarning: Illegal line