我终于设法解决了这个问题。它可能看起来很奇怪,但也许其他人可以从中受益。
解决方案可能取决于您使用的软件。我在 W8 64 位下使用 Enthought Canopy (Python) 和 MikTeX 2.9。如果您想使用 'text.usetex': True 选项输出带有 matplotlib 的 .ps 和 .eps 文件,那么您将遇到上面发布的问题。
解决方案:
- 从http://www.ghostscript.com/download/gsdnld.html下载并安装 Ghostscript(32 位)。
- 从http://www.tm.uka.de/~bless/ps2eps下载 ps2eps-1.68.zip 。过程在手册中给出,但是我想指出环境变量的部分。在这最后一步中,您需要转到控制面板 --> 系统 --> 高级系统设置。然后单击标题“高级”,在窗口底部您会看到单击的“环境变量”。然后,您将“新建”按钮用于 USERNAME 的用户变量。然后输入变量名“ps2eps”,变量值输入保存 ps2eps.pl 文件的实际路径。就我而言,这是“C:\Program Files (x86)\ps2eps\bin\”。您可以检查您是否在命令窗口中输入了“ps2eps”。
- 从http://www.foolabs.com/xpdf/download.html下载 xpdfbin-win-3.03.zip 。您只需要文件“pdftops.exe”。但是我无法像第 2 步那样分配路径。我通过将“pdftops.exe”放在 MikTeX 2.9 文件夹中解决了这个问题。我的确切位置是'C:\Program Files\MiKTeX 2.9\miktex\bin\x64'。
然后我能够将数字保存为 .ps 并且不再有任何错误消息。请记住使用http://matplotlib.org/users/usetex.html上的“postscript options”下建议的设置。在我自己使用以下设置:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.rc('font', **{'family':'serif', 'serif':['Computer Modern Roman'],
'monospace':['Computer Modern Typewriter']})
params = {'backend': 'ps',
'text.latex.preamble': [r"\usepackage{upgreek}",
r"\usepackage{siunitx}",
r"\usepackage{amsmath}",
r"\usepackage{amstext}",],
'axes.labelsize': 18,
#'axes.linewidth': 1,
#'text.fontsize':17,
'legend.fontsize': 10,
'xtick.labelsize': 13,
#'xtick.major.width' : 0.75,
'ytick.labelsize': 13,
'figure.figsize': [8.8,6.8],
#'figure.dpi': 120,
'text.usetex': True,
'axes.unicode_minus': True,
'ps.usedistiller' : 'xpdf'}
mpl.rcParams.update(params)
mpl.rcParams.update({'figure.autolayout':True})
(而许多参数只是为了我稍后在情节中的目的)
作为初学者,如果您从 python 控制台运行脚本,我不太了解使用的“后端”的依赖性。但是,我之前在没有任何 --pylab 设置的情况下使用了它,如果他已经在具有特定 matplotlib 后端的控制台中工作,我不知道是否需要手动切换后端。