2013-11-02 53 views
3

我在PyLab(64位)上使用Enthought Canopy。对于我的报告,我需要使用Latex(XeLaTex),并使用matplotlib完成绘图。无法保存数据为.eps [gswin32c无法识别]

要有第一个想法,我只复制http://matplotlib.org/users/usetex.html的第二个例子并编译它。它看起来很好,我可以保存它作为一个正常的PNG没有问题。但是,如果我尝试将其保存为.EPS or.ps它不起作用并出现错误:

无效字面INT()基数为10:“

Additionaly在Pylab壳它显示:

“gswin32c”不被识别为一个内部或外部命令,可操作的程序或批处理文件”。

如果我将其保存为.PDF我没有问题,除了文字是全黑的而不是红色和蓝色。这是一个问题,因为在我的情节中,我有两个坐标轴,为了更好的可读性,我需要将它们着色。

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

谢谢!

+0

听起来像是你需要安装GS(Ghostscript的)http://www.ghostscript.com/download/ – Jakob

+0

是否样品工作在电脑上? 我已经安装了ghostscript,错误信息仍然是一样的。 –

+0

编辑:它已经证明,用户是错误的情况下.pdf不显示正确的图像。根据我的Adobe阅读器的偏好,我必须关闭'使用Windows配色方案',颜色突然重新出现。 当我看到TexStudio的内部PDF查看器正确显示数字时,我开始了这个想法。 这很好,但.ps(.eps)的问题仍未解决。 –

回答

2

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

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

解决方案:

  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并且不再有任何错误消息。请记住在'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}) 

(而许多则params的只是我自己的目的,在后面的地块)

作为一个初学者,我不是非常了解从依赖“ backend',如果你正在从你的python控制台运行脚本的话。但是我用这个没有之前的任何--pylab设置,我不知道,如果一个无需手动切换后端,如果他是在控制台与特定matplotlib后端工作了。

0

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

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

当我删除此IIT工作正常,现在我可以节省EPS。 因此,请确保任何最短的工作示例都可以为您工作,然后检查代码中的字体和其他样式编辑。这可能有帮助。