Eu quero criar rótulos para minhas parcelas com a fonte moderna de computador de látex. No entanto, a única maneira de persuadir o matplotlib a usar a fonte latex é inserindo algo como:
title(r"$mathrm{test}$")
Isso é obviamente ridículo, digo ao látex parainicie o modo matemático e saia do modo matemático para gravar a cadeia real. Como posso ter certeza de que todos os rótulos são renderizados em látex, em vez de apenas as fórmulas? E como posso ter certeza de que esse será o comportamento padrão?
Um exemplo de trabalho mínimo é o seguinte:
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()
Isso dá o seguinte resultado:
Aqui o eixo x é como eu quero que os rótulos apareçam. Como posso ter certeza de que todos os rótulos são exibidos assim, sem ter que ir para o modo de matemática e vice-versa?
Respostas:
32 para resposta № 1A fonte padrão Latex é conhecida como 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 para resposta № 2
A resposta marcada pode ser ativada por padrão, alterando algumas linhas no matplotlibrc
Arquivo:
text.usetex = True
font.family = serif
font.serif = cm
9 para resposta № 3
Estou usando o matplotlib 1.3.1 no Mac OSX, adicione as seguintes linhas em matplotlibrc
funciona para mim
text.usetex : True
font.family : serif
font.serif : cm
Usando =
leva a um UserWarning: Illegal line