Невозможно сохранить рисунок в формате .eps [gswin32c не распознается]

Я использую Enthought Canopy с PyLab (64-разрядная версия). Для моего отчета мне нужно использовать Latex (XeLaTex), а графики сделаны с помощью matplotlib.

Чтобы иметь первое представление, я просто скопировал второй пример из http://matplotlib.org/users/usetex.html и скомпилировал его. Он выглядит нормально, и я могу без проблем сохранить его как обычный png. Однако, если я попытаюсь сохранить его как .eps или .ps, это не сработает, и появится ошибка:

недопустимый литерал для int() с основанием 10: "

Кроме того, в оболочке Pylab отображается:

«gswin32c» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл».

Если я сохраню его как .pdf, у меня не будет проблем, за исключением того, что текст будет черным, а не красным и синим. Это проблема, потому что на моих графиках есть две оси, и мне нужно их раскрасить для лучшей читаемости.

Если я затем попытаюсь удалить некоторые строки из приведенного примера (весь текст), я все равно не смогу сохранить его как .eps или .ps. Я не могу понять проблему, и все другие темы, связанные с этим, не дали мне понимания. Поэтому мне очень нужна ваша помощь, потому что я не могу использовать .png для своего отчета.

Заранее спасибо!!!


person Red Pencil    schedule 02.11.2013    source источник
comment
Похоже, вам нужно установить gs (ghostscript) ghostscript.com/download   -  person Jakob    schedule 03.11.2013
comment
Образец работает на вашем компьютере? Я уже установил ghostscript, но сообщение об ошибке остается прежним.   -  person Red Pencil    schedule 03.11.2013
comment
РЕДАКТИРОВАТЬ: оказалось, что пользователь является ошибкой в ​​случае, если .pdf не показывает правильное изображение. В настройках моего Adobe Reader я должен отключить «использовать цветовую схему Windows», и цвет внезапно появился снова. Я пришел к этой идее, когда увидел, что внутренний просмотрщик pdf от TexStudio правильно показывает рисунок. Это хорошо, однако проблема с .ps (.eps) до сих пор не решена.   -  person Red Pencil    schedule 03.11.2013
comment
Я смог протестировать только с linux, и после установки dvipng все заработало нормально. Вы проверили, что ghostscript находится в вашем PATH (см. Возможные зависания в ссылке, которую вы разместили)?   -  person Jakob    schedule 04.11.2013


Ответы (2)


Наконец-то мне удалось решить эту проблему. Это может выглядеть странно, но, возможно, другим людям это может быть полезно.

Решение может зависеть от используемого вами программного обеспечения. Я использую Enthought Canopy (Python) и MikTeX 2.9 под W8 64bit. Если вы хотите выводить файлы .ps и .eps с помощью matplotlib, используя параметр «text.usetex»: True, вы столкнетесь с проблемой, описанной выше.

Решение:

  1. Загрузите и установите Ghostscript (32-разрядную версию) с http://www.ghostscript.com/download/gsdnld.html. .
  2. Загрузите ps2eps-1.68.zip с http://www.tm.uka.de/~bless/ps2eps. Порядок действий описан в руководстве, однако я хотел бы указать на часть с переменными среды. На этом последнем шаге вам нужно перейти в Панель управления --> Система --> Дополнительные параметры системы. Затем щелкните заголовок «Дополнительно», и в нижней части окна вы увидите «Переменные среды», на которые вы нажимаете. Затем вы используете кнопку «Создать» для пользовательских переменных для USERNAME. Затем вы вводите в качестве имени переменной «ps2eps», а в качестве значения переменной вы вводите фактический путь, по которому вы сохранили файл ps2eps.pl. В моем случае это «C:\Program Files (x86)\ps2eps\bin\». Вы можете проверить, набрали ли вы «ps2eps» в командном окне.
  3. Загрузите xpdfbin-win-3.03.zip с http://www.foolabs.com/xpdf/download. HTML. Вам нужен только файл «pdftops.exe». Однако я не мог назначить путь, как на шаге 2. Я решил эту проблему, поместив «pdftops.exe» в папку MikTeX 2.9. Точное местоположение для меня было «C:\Program Files\MiKTeX 2.9\miktex\bin\x64».

Затем я смог сохранить цифры в формате .ps, и у меня больше не было сообщений об ошибках. Не забудьте использовать настройки, предложенные на 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.

person Red Pencil    schedule 04.11.2013

У меня была такая же проблема, и моя проблема заключалась в настройке шрифта в коде Python, а именно:

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

когда я удаляю это, все работает нормально, и теперь я могу сохранять eps. Поэтому убедитесь, что любой кратчайший рабочий пример работает для вас или нет, а затем проверьте шрифт и другие изменения стиля в вашем коде. Это может помочь.

person opethian    schedule 22.06.2015