【问题标题】:Can't save figure as .eps [gswin32c is not recognized]无法将图形另存为 .eps [gswin32c 无法识别]
【发布时间】:2013-11-02 18:25:30
【问题描述】:

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

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

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

另外在 Pylab shell 中显示:

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

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

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

提前谢谢你!!!

【问题讨论】:

  • 听起来需要安装gs(ghostscript)ghostscript.com/download
  • 该示例可以在您的计算机上运行吗?我已经安装了ghostscript,报错信息还是一样。
  • 编辑:事实证明,在 .pdf 未显示正确图像的情况下,用户是错误的。在我的 adobe 阅读器的首选项下,我必须关闭“使用 windows 配色方案”,颜色突然重新出现。当我看到 TexStudio 的内部 pdf 查看器正确显示了该图时,我想到了这个想法。这很好,但是 .ps (.eps) 的问题仍未解决。
  • 我只能用 linux 进行测试,安装 dvipng 后一切正常。您是否检查过 ghostscript 在您的 PATH 中(请参阅您发布的链接中的可能挂断)?

标签: python-2.7 matplotlib eps


【解决方案1】:

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

解决方案可能取决于您使用的软件。我在 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 并且不再有任何错误消息。请记住使用“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 后端的控制台中工作,我不知道是否需要手动切换后端。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2019-07-17
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      相关资源
      最近更新 更多