/ / Matplotlib no usa fuente de látex mientras text.usetex == True - python, matplotlib, latex

Matplotlib no usa fuente de látex mientras text.usetex == True - python, matplotlib, latex

Quiero crear etiquetas para mis parcelas con la fuente moderna de computadora de látex. Sin embargo, la única forma de persuadir a matplotlib para que use la fuente de látex es insertando algo como:

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

Esto es por supuesto ridículo, le digo al látexinicie el modo matemático y luego salga del modo matemático temporal para escribir la cadena real. ¿Cómo me aseguro de que todas las etiquetas se representen en látex, en lugar de solo las fórmulas? ¿Y cómo me aseguro de que este sea el comportamiento predeterminado?

Un ejemplo mínimo de trabajo es el siguiente:

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

Esto da el siguiente resultado:

Diagrama que muestra la representación incorrecta de los tipos de fuente de látex

Aquí el eje x es cómo quiero que aparezcan las etiquetas. ¿Cómo me aseguro de que todas las etiquetas aparezcan así sin tener que ir al modo matemático y regresar?

Respuestas

32 para la respuesta № 1

La fuente predeterminada de Latex se conoce 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()

enter image description here


9 para la respuesta № 2

La respuesta marcada se puede habilitar por defecto cambiando algunas líneas en el matplotlibrc archivo:

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

9 para la respuesta № 3

Estoy usando matplotlib 1.3.1 en Mac OSX, agregue las siguientes líneas en matplotlibrc funciona para mi

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

Utilizando = conduce a un UserWarning: Illegal line