Подтвердить что ты не робот

Output.png из gnuplot не так хорош, как цифра из командной строки

Я часто рисую графики в командной строке 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

Этот способ решает мою проблему.

4b9b3361

Ответ 1

Источником ваших проблем с качеством 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 libs для рендеринга, и это делает вывод намного более гладким и приятным. set term pngcairo дает следующий результат:

The sine curve, plotted using the pngcairo terminal

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

Ответ 2

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

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

set terminal png size <x,y>   

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

set terminal png size 1024,768

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

Ответ 3

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

Ответ 4

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