/ / Matplotlib não usando fonte latex enquanto text.usetex == True - python, matplotlib, latex

Matplotlib não usando fonte latex enquanto text.usetex == True - python, matplotlib, latex

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:

Gráfico mostrando a renderização incorreta dos tipos de fonte latex

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 № 1

A 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()

insira a descrição da imagem aqui


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