Как избежать вызова 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')
Другие вопросы по тегам