Я пытаюсь построить график с логарифмической осью Y, используя pgf_with_latex
, т. Е. Все форматирование текста выполняется pdflatex. В моем параметре matplotlib rc я определяю шрифт, который будет использоваться. Вот моя проблема: в стандартном matplotlib.ticker.LogFormatterSciNotation
форматере использовался математический текст и, следовательно, математический шрифт, который не подходит для остальных шрифтов (sans-serif).
Как я могу отформатировать метки оси Y с использованием средства форматирования из matplotlib.ticker
, чтобы я получал метки, отформатированные как степени 10 с надстрочными знаками? Чтобы быть более конкретным: как мне отформатировать эти yticklabels таким же образом, но со шрифтом из xticklabels?
Я уже пытался использовать разные форматеры, предоставленные matplotlib.ticker
, но ни у одного из них показатели не были написаны так, как я хочу.
Вот пример того, что я имею в виду под MWE ниже.
import matplotlib as mpl
mpl.use('pgf')
pgf_with_latex = {
"pgf.texsystem": "pdflatex",
"font.family": "sans-serif",
"text.usetex": False,
"pgf.preamble": [
r"\usepackage[utf8x]{inputenc}",
r"\usepackage{tgheros}", # TeX Gyre Heros sans serif
r"\usepackage[T1]{fontenc}"
]
}
mpl.rcParams.update(pgf_with_latex)
import matplotlib.pyplot as plt
fig = plt.figure(figsize=[3, 2])
ax = fig.add_subplot(111)
ax.set_yscale("log")
ax.minorticks_off()
ax.set_xlabel("sans-serif font label")
ax.set_ylabel("math font label")
plt.gca().set_ylim([1, 10000])
plt.gcf().tight_layout()
plt.savefig('{}.pdf'.format("test"))
Осторожно: в вашей системе должен быть установлен дистрибутив TeX. Я использовал MikTex 2.9. Также Python 3.6.2 и matplotlib 2.1.2.