GNUPLOT

-не так Часто Задаваемые Вопросы-

обновлено 2010/12/26

После построения (No.2)

1 | 2 | 3

Как преобразовать изображение в формат PNG?

Gnuplot может напрямую генерировать ppm и png изображения. Но GIF файлы, генерированные gnuplot, не сжимаются из-за проблем с патентом LZW, поэтому они имеют весьма большой размер. Кроме того формат GIF больше не поддерживался в версии gnuplot 3.8. Основная область использования GIF – web-страницы, на которые выкладывались графики. Но gnuplot так же имеет возможность вывода PNG (Portable Network Graphics) изображений, которые так же поддерживаются браузерами и имеют меньший размер, в отличии от GIF.

Существует несколько способов преобразования формата изображения:

  • Отобразить график на X-терминале, скопировать окно при помощи "xwd", конвертировать в различные форматы с помощью приложений "xv", "ImageMagick", "Gimp" и т.д.
  • Создать график в формате ppm, конвертировать с помощью "ImageMagick", "xv", "pbmplus", "netpbm", "Gimp".
  • Создать график в формате PostScript, конвертировать его с помощью "GhostScript" (gs поддерживает большое количество форматов изображений).
  • Создать PostScript файл, открыть с помощью "GhostScript", скопировать при помощи "xwd", конвертировать при помощи "xv", "ImageMagick", "Gimp" и т.д.

Netpbm (ppmtoXXX команды) используются для автоматического преобразования. Использование xwd, возможно, самый простой способ преобразования изображения.

Сначала необходимо показать отобразить в Gnuplot, затем перенести это в окно с xwd.

gnuplot> set yrange [-6:6] 
gnuplot> set hidden3d
gnuplot> set isosample 40
gnuplot> splot x*sin(y)
gnuplot> shell
 % xwd > screen.xwd
 % exit
exit

gnuplot> 

Открыть "screen.xwd" с xv, Imagemagick (дисплей команда) или Gimp и сохранить изображение в формате PNG. В противном случае, с netpbm

 % xwdtopnm < screen.xwd | ppmtopng > screen.png

Данный пример генерирует PNG тоже.

fig/sample8.3b

GhostScript позволяет проверить, какие форматы изображений gs поддерживаются в первую очередь. Это может быть сделано с помощью gs опции --help.

 % gs -help
 GNU Ghostscript 5.10 (1998-12-17)
 Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
 Usage: gs [switches] [file1.ps file2.ps ...]
 Most frequently used switches: (you can use # in place of =)
  -dNOPAUSE           no pause after page   | -q       `quiet', fewer messages
  -g<width>x<height>  page size in pixels   | -r<res>  pixels/inch resolution
  -sDEVICE=<devname>  select device         | -dBATCH  exit after last file
  -sOutputFile=<file> select output file: - for stdout, |command for pipe,
                                          embed %d or %ld for page #
 Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
 Available devices:
    x11 x11alpha x11cmyk x11gray2 x11mono ml600 npdl epag escpage lbp310
    lbp320 lips2p lips3 lips4 lips4c lips4v lips4vc fmpr mjc180 mjc360 mjc720
    mj500c pr150 jj100 bj10v bj10vh md5000 dmprt deskjet djet500 laserjet
 .....

Пояснение, как преобразовать файл PS в jpeg с gs. Сначала создается через Gnuplot EPS файл, затем преобразовывается с gs.

 % gs -dNOPAUSE -sDEVICE=jpeg -sOutputFile=test.jpg -q
   -dBATCH -g500x350 test.eps

Команда, приведенная выше, не должна быть сложной и занимать более одной строки. -sOutputFile указывает имя выводимого файла. В то время как -sOutputFile=- , выводит на STDOUT. Опция -g отображает пиксельный размер изображения, который зависит от размера фигуры в EPS файле.

Формат JPEG используется в основном для фото изображений и не подходит для изображений с сильным контрастом на краях. Лучше использовать GIF и PNG, чем JPEG.

fig/sample8.3c
EPS файл Gnuplot, отображенный с gv
fig/sample8.3d
Необходимо конвертировать jpeg с gs
up