Как избежать вызова latex в matplotlib (вывод в pgf) - PullRequest
0 голосов
/ 08 февраля 2019

Я использую 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 Ответ

0 голосов
/ 08 февраля 2019

Есть ли причина, по которой вы не решаетесь включить преамбулу?Это облегчает решение.У меня работает следующее:

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')
...