pgf
我对 matplotlib后端中的文本渲染有疑问。我正在使用 matplotlib 导出绘图的 .pdf 文件。在带有 rcParameters 的部分中,我定义了我想使用 sans-serif 并且我想使用 Helvetica 作为字体。因此我禁用了该选项text.usetex
。这是一个MWE:
import matplotlib as mpl
import os
mpl.use('pgf')
pgf_with_latex = {
"pgf.texsystem": "pdflatex",
"text.usetex": False,
"font.family": "sans-serif",
"font.sans-serif": "Helvetica",
"pgf.preamble": [
r"\usepackage[utf8x]{inputenc}",
r"\usepackage[T1]{fontenc}",
r"\usepackage{textcomp}",
r"\usepackage{sfmath}",
]
}
mpl.rcParams.update(pgf_with_latex)
import matplotlib.pyplot as plt
def newfig():
plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
return fig, ax
fig, ax = newfig()
ax.set_xlabel("Some x-label text")
ax.text(0.3, 0.5, r"This text is not antialiased! 0123456789", transform=ax.transAxes, fontsize=8)
plt.savefig(os.getcwd() + "/test.pdf")
结果是,刻度标签和文本在 Computer Modern (-> LaTeX) 中而不是 Helvetica 中呈现,并且它们没有呈现为矢量图形并且看起来像素化。现在,当我启用text.usetex
刻度标签成为矢量图形(我可以放大而不看到像素),但文本没有!
我必须做什么才能使所有内容(刻度标签、轴标签、图例、文本等)都被矢量化 Helvetica?这甚至可能吗?如果没有,我如何让文本、图例等在 Computer Modern 中像刻度标签一样被矢量化?
编辑:Python 3.4.4,matplotlib 1.5.2
这是平滑的刻度标签与参差不齐的 xlabel
另一个编辑:如果我将我的文件保存为 .eps 而不是 .pdf 并启用usextex
我得到奇妙的矢量化字体,但刻度标签是衬线字体:<