output.png из gnuplot не так хорош, как рисунок из командной строки - PullRequest
46 голосов
/ 31 января 2012

Я часто строю графики в gnuplot командной строке, например:

gunuplot> plot sin(x) with linespoints pointtype 3

, и фигура показалась великолепной.

Сегодня я сохраняю график в .png файл, как это:

gnuplot> set term png
gnuplot> set output "output.png"
gunuplot> plot sin(x) with linespoints pointtype 3

Затем я открываю output.png с eog в Ubuntu, например:

$ eog output.png

Я обнаружил, что отображается output.pngв eog не так хорошо, как на рисунке, показанном в командной оболочке.

Почему это так?Нужно ли настраивать некоторые параметры перед сохранением output.png?

PS

Я нашел способ обойти это, сначала

set term postscript
set output "output.ps"

затем в оболочке linux,

$ convert output.ps output.jpg

Таким образом, можно решить мою проблему.

Ответы [ 4 ]

75 голосов
/ 02 февраля 2012

Источником ваших проблем с качеством PNG, скорее всего, является отсутствие сглаживания в терминале png Gnuplot. Поскольку вы не делаете скриншотов, я не уверен, что вы имеете в виду, говоря о плохой ширине линии, но вот как это выглядит для меня (на MacOS). Этот снимок экрана показывает выходные данные родной продукции gnuplot:

A plot using gnuplot's native aquaterm output

Если мы создадим png, используя set term png, строки станут «скачкообразными» и пикселизированными:

The sine curve, plotted using the png terminal

Тем не менее, существует версия терминала png, которая использует библиотеки Cairo для рендеринга, что делает вывод гораздо более плавным и приятным. set term pngcairo дает такой результат:

The sine curve, plotted using the pngcairo terminal

Вы можете использовать set terminal, чтобы проверить, доступна ли вам эта версия терминала. Если это так, это должно сэкономить вам работу по конвертации, а также дать лучшее качество изображения, чем JPG (что не является идеальным форматом для штриховых рисунков).

14 голосов
/ 26 июня 2014

Размер по умолчанию для сгенерированного gnuplot изображения PNG с терминалом PNG составляет 640x480 пикселей.Это разрешение в некоторых случаях может привести к появлению «пиксельных» графиков, которые не так хороши, как графики, выводимые на экран с помощью терминала по умолчанию (wxt).

Вы можете изменить разрешение выходного изображения с помощью параметра размера:

set terminal png size <x,y>   

где x и y - желаемое количество пикселей по горизонтальной и вертикальной оси соответственно.Например:

set terminal png size 1024,768

Обратите внимание, что изображения с большим разрешением приводят к пропорционально большим файлам на диске.В качестве альтернативы вы можете попробовать использовать нерастровые терминалы, такие как «post eps» или «pdf», если они доступны на вашем компьютере, что может дать вам высококачественные масштабируемые и (относительно) переносимые изображения без большого места на диске.

8 голосов
/ 31 января 2014

В качестве альтернативы, если вы хотите получить изображения профессионального качества (готовые к публикации) с помощью gnuplot, вам стоит взглянуть на терминал epslatex.Я широко использовал его для своей диссертации и моих работ с очень хорошими результатами, практически без проблем с пикселизацией, переносимостью при преобразовании изображений в pdf и почти всеми возможностями Latex.

1 голос
/ 10 января 2015

Комментарий: в качестве примера вы используете файл JPEG. Вы, вероятно, никогда не должны использовать JPEG для линейных графиков, если они не имеют фотографий в качестве фона. JPEG просто не предназначен для обработки острых краев линий.

...