我正在尝试使用pgf_with_latex
绘制具有对数y轴的图形,即所有文本格式均由pdflatex完成。在我的matplotlib rc参数中,我定义了要使用的字体。这是我的问题:标准matplotlib.ticker.LogFormatterSciNotation
格式化程序使用了数学文本,因此使用了一种数学字体,该字体不适合其余字体(sans-serif)。
如何使用matplotlib.ticker
中的格式化程序对y轴标签进行格式化,以便将标签格式化为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。