Как избежать вызова latex в matplotlib (вывод в pgf)
Я использую matplotlib с его pgf-бэкендом для генерации графиков, которые я включаю в свой проект LaTeX beamer. Я сталкиваюсь с проблемами, когда использую латексные команды, которые не определены. Но для моего приложения мне не нужен matplotlib для генерации меток или аннотаций с использованием латекса, мне нужен только правильный вывод pgf, и я буду вызывать LaTeX в своем документе beamer. Если бы я запустил этот код в записной книжке, я бы ожидал, что в xlabel будет график с буквенным символом "\si{\ процент}".
В MWE ниже, когда я запускаю его с закомментированной строкой (используя \si{\percent}
), происходит сбой matplotlib с латексной ошибкой ("неизвестная команда si"). Я не хочу создавать преамбулу с помощью matplotlib, я просто хочу вывод pgf, содержащий команду \ si {\ процент}...
Если я использую двойную обратную косую черту, код проходит, но двойная обратная косая черта появляется также в выводе pfg, и, следовательно, latex не распознает команду (я думаю, что она видит новую строку).
Я не понимаю "значение" plt.rc('text', usetex=False). Я думал, что это отключит вызов LaTeX вообще...
import numpy as np
import matplotlib as mpl
mpl.use('pgf')
from matplotlib import pyplot as plt
from matplotlib import rc
plt.style.use('bmh')
plt.rc('pgf',rcfonts=False)
plt.rc('text', usetex=False)
x = np.linspace(0,100,101)
y = np.cos(x/100)*np.exp(-x/100)
plt.plot(x,y)
#plt.xlabel(r'value (\si{\percent})')
plt.xlabel(r'value (%)')
plt.savefig('test.pgf')
1 ответ
Есть ли причина, по которой вы не решаетесь включить преамбулу? Это облегчает решение. Следующие работы для меня:
import numpy as np
import matplotlib as mpl
mpl.use('pgf')
from matplotlib import pyplot as plt
pgf_with_latex = {
'text.usetex': False,
'pgf.rcfonts': False,
"pgf.preamble": [
r"\usepackage{siunitx}"
]
}
mpl.rcParams.update(pgf_with_latex)
plt.style.use('bmh')
x = np.linspace(0,100,101)
y = np.cos(x/100)*np.exp(-x/100)
plt.plot(x,y)
plt.xlabel(r'value (\si{\percent})')
plt.savefig('test.pgf')