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
Этот способ решает мою проблему.
Ответы
Ответ 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 просто не предназначен для обработки острых краев линейных рисунков.