无法将数字保存为.eps [gswin32c无法识别]

时间:2013-11-02 18:25:31

标签: python-2.7 matplotlib eps

我正在使用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作为我的报告。

提前谢谢!!!

2 个答案:

答案 0 :(得分:2)

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

解决方案可能取决于您使用的软件。我在W8 64bit下使用了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使用'New'-Button for User Variables。然后输入变量名'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'。
  4. 然后我能够将数字保存为.ps并且不再有任何错误消息。请记住使用{postscript options'下http://matplotlib.org/users/usetex.html上建议的设置。 在我自己中使用了以下设置:

    #!/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后端的控制台中工作,我不知道是否需要手动切换后端。

答案 1 :(得分:0)

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

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

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