Подтвердить что ты не робот

Matplotlib не использует шрифт латекса, а text.usetex = True

Я хочу создать ярлыки для своих сюжетов с современным шрифтом латексного компьютера. Тем не менее, единственный способ убедить matplotlib использовать шрифт латекса - вставить что-то вроде:

title(r'$\mathrm{test}$')

Это, конечно, смешно, я говорю латексу, чтобы начать математический режим, а затем выйдите из режима математики, чтобы записать фактическую строку. Как я могу убедиться, что все метки отображаются в латекс, а не только формулы? И как я могу убедиться, что это будет поведение по умолчанию?

Минимальный рабочий пример выглядит следующим образом:

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

Это дает следующий результат:

Plot showing incorrect rendering of latex font types

Здесь ось x - это то, как я хочу, чтобы метки отображались. Как я могу убедиться, что все ярлыки выглядят как это, не переходя в математический режим и обратно?

4b9b3361

Ответ 1

Шрифт Latex по умолчанию известен как 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

Ответ 2

Отмеченный ответ можно включить по умолчанию, изменив несколько строк в файле matplotlibrc:

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

Ответ 3

Я использую matplotlib 1.3.1 на Mac OSX, добавьте следующие строки в matplotlibrc для меня

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

Использование = приводит к a UserWarning: Illegal line