3

我将 Enthought Canopy 与 PyLab(64 位)一起使用。对于我的报告,我需要使用 Latex (XeLaTex),并且绘图是使用 matplotlib 完成的。

为了获得第一个想法,我刚刚从http://matplotlib.org/users/usetex.html复制了第二个示例并对其进行了编译。它看起来很好,我可以将它保存为正常的 png 而不会出现问题。但是,如果我尝试将其另存为 .eps 或 .ps 它不起作用并出现错误:

以 10 为基数的 int() 的无效文字:"

另外在 Pylab shell 中它显示:

'gswin32c' 不是内部或外部命令、可运行程序或批处理文件。

如果我将它保存为 .pdf 我没有问题,除了文本全是黑色而不是红色和蓝色。这是一个问题,因为在我的图中我有两个轴,我需要将它们着色以提高可读性。

如果我尝试从给定的示例中删除一些行(所有文本),我仍然无法将其保存为 .eps 或 .ps。我无法弄清楚这个问题,与此相关的所有其他主题都没有让我有见识。所以我真的需要你的帮助,因为我的报告不能使用 .png。

先感谢您!!!

4

2 回答 2

2

我终于设法解决了这个问题。它可能看起来很奇怪,但也许其他人可以从中受益。

解决方案可能取决于您使用的软件。我在 W8 64 位下使用 Enthought Canopy (Python) 和 MikTeX 2.9。如果您想使用 'text.usetex': True 选项输出带有 matplotlib 的 .ps 和 .eps 文件,那么您将遇到上面发布的问题。

解决方案:

  1. 从http://www.ghostscript.com/download/gsdnld.html下载并安装 Ghostscript(32 位)。
  2. 从http://www.tm.uka.de/~bless/ps2eps下载 ps2eps-1.68.zip 。过程在手册中给出,但是我想指出环境变量的部分。在这最后一步中,您需要转到控制面板 --> 系统 --> 高级系统设置。然后单击标题“高级”,在窗口底部您会看到单击的“环境变量”。然后,您将“新建”按钮用于 USERNAME 的用户变量。然后输入变量名“ps2eps”,变量值输入保存 ps2eps.pl 文件的实际路径。就我而言,这是“C:\Program Files (x86)\ps2eps\bin\”。您可以检查您是否在命令窗口中输入了“ps2eps”。
  3. 从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 后端的控制台中工作,我不知道是否需要手动切换后端。

于 2013-11-04T00:12:58.083 回答
0

我遇到了同样的问题,我的问题是 python 代码中的字体调整:

from matplotlib import rc 
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True)

当我删除这个 iit 工作正常,现在我可以保存 eps。因此,请确保任何最短的工作示例都适合您,然后检查代码中的字体和其他样式编辑。这可能会有所帮助。

于 2015-06-22T14:47:37.213 回答