Знакомимся с Gnuplot
Gnuplot — это кроссплатформенная unix-way утилита для рисования графиков. Вы можете сделать графики в привычном MS Excel или LibreOffice Calc, но… Что вы будете делать, если понадобится нарисовать нечто более сложное, быстро и не руками? Например, такое:
Gnuplot or not: когда это нужно?
- Когда вы хотите автоматизировать процесс построения графиков, а не заниматься ручным набиванием чисел в таблицу Excel.
- Если приходится (предстоит в ближайшем будущем) строить графики много и часто.
- Когда вашей программе нужно простое средство визуализации.
- Когда встроенных в Excel возможностей не хватает. Там можно строить в полярных координатах? А в сферических? А делать анимацию?
- Когда нужна картинка в векторном формате ( .svg , .eps ).
- Если вы верстаете в LaTeX и заинтересованы в качественных, векторных графиках.
Гнуплот не нужен, если
- Имеющиеся инструменты вас вполне устраивают. Вы — гуру Matlab, Mathcad или Wolfram Mathematica.
- Графики приходится строить редко.
- Вы не дружите с программированием, командной строкой, скриптами и даже не хотите знать, что это такое.
Гнуплот прекрасен! Возможно даже, что я проникся CLI именно во время освоения этой утилиты. Рекомендую бегло ознакомиться с ее возможностями на официальном сайте.
Гнуплот поддерживает кучу форматов файлов, как векторных, так и растровых. Разумеется, можно выводить результат сразу на экран.
Самое ценное его качество — интерфейс командной строки, позволяющий строить графики из других программ, используя каналы (pipelines). Поэтому гнуплот окажется очень кстати, если вы пишете маленькую демонстрационную программку (какие-нибудь численные методы), графический интерфейс которой занимал бы добрую половину кода.
Различия между Linux и Windows версиями
Их почти нет. Аналог линуксового терминала x11 называется win — вот, по сути, и все отличия. Однако, есть слабо заметные нюансы, из-за которых гнуплот в линуксе мне больше нравится. Например, анимация выглядит плавнее.
Начинаем строить
Команды можно вводить сразу в интерпретатор:
А можно сохранить их в файл, чтобы автоматизировать процесс. Продемонстрирую на примере. Создадим файл с именем sin_cos.plt , куда запишем магические заклинания:
set terminal png size 600,400 set output "sin_cos.png" plot [-pi:pi] sin(x), cos(x)
Только что я создал скрипт. Теперь откроем его в гнуплоте (это делается немного по-разному на Windows и Linux).
Рекомендуемые расширения для скриптов: .plt , .gnu , .gpi , .gih . В текстовом редакторе Vim есть подсветка скриптов гнуплота, но она автоматически включается только для .gpi . Для неискушенных пользователей сойдет режим подсветки языка bash. Разумеется, без подсветки всё тоже будет работать.
В линуксе можно использовать sha-bang #!/usr/bin/gnuplot -persist . Опция -persist не даёт окну с графиком закрыться по окончании работы скрипта.
С чего начать?
- Успокоиться и взять себя в руки.
- Самое сложное поначалу — не пытаться работать с этим как с MS Excel. У вас не получится построить график, просто потыкав мышкой.
- Рекомендую пройтись по всем разделам примеров, чтобы взять какой-нибудь за основу. К сожалению, там описаны не все фишки.
- Сперва нужно четко понять, что вы хотите изменить (хочу легенду слева, линии другим цветом, подписи к осям), затем найти команду, отвечающую за эти действия. Поменять можно почти всё. Я до сих пор нахожу что-то новое.
- В конце статьи я привел несколько хороших, проверенных ссылок. Когда сам что-то забываю, они меня выручают.
- Если ничего не помогает, тогда читать документацию. К сожалению, в официальном FAQ нет ни одной картинки. Поиск выручает.
О терминалах
Терминал в данном случае — это то место, где вы увидите график. Приведу наиболее часто используемые:
- Оконные: x11 (или win , если Windows), wxt .
- Векторные: svg , epscairo , dxf , latex , epslatex .
- Растровые: pngcairo , gif , jpeg .
Терминал pngcairo предпочтительнее терминала png , поскольку поддерживает альфа-канал (полупрозрачность), от чего линии и шрифты выглядят более гладкими.
Ещё один короткий пример
set terminal wxt plot '-' u 1:2 w linespoints lw 2 lt 3 ps 2 pt 4 title 'линия' 0 0.5 1 1 3 -1 4 -0.5 4 0.5 3 1 1 -1 0 -0.5 e
set terminal wxt — делаем вывод картинки на экран. Отрисовкой окна занимается wxWidgets, отрисовкой содержимого — библиотеки cairo и pango;
plot — построить двухмерный график;
‘-‘ — координаты будут переданы ниже в этом файле;
u 1:2 — используя первый и второй столбец (u — это алиас для using, можно писать и так, и так);
w linespoints — в виде линий с точками (w — это алиас для with);
lw 2 — толщина линии (linewidth) 2 пикселя;
lt 3 — тип линии (linetype). В данном случае задает цвет. Явно задать цвет можно с помощью lc (linecolor);
ps 2 — размер точки (poinsize);
pt 4 — точка в виде квадратика (pointtype);
title ‘линия’ — подпись в легенде.
Дальше идут координаты в виде “x y”. Пустая строка посередине сделает разрыв в линии.
e указывает на конец потока чисел. Можно написать end , это одно и то же.
Ссылки
Гнуплот распространён не так широко, как MS Excel, поэтому инструкций для чайников в интернете мало, и в основном на английском.
- Gnuplot tips (not so FAQ) — неплохое руководство, переведенное на русский. К сожалению, несколько устарело.
- Много записей по теме есть в записках дебианщика.
- Gnuplotting.org — красивые и сложные примеры.
- блог gnuplot-tricks — неочевидные приемы и эффекты.
- Краткое описание в журнале Linux Format.
- Поскольку на блогспоте сидит много линуксоидов, логично поискать именно там.
Все статьи
- Строгий календарь 2022
- Строгий календарь 2021
- Ушёл в отпуск
- Осваиваем мониторинг с Prometheus. Часть 3. Настройка Prometheus server
- Строгий календарь 2020
- Осваиваем мониторинг с Prometheus. Часть 2. PromQL и метки
- Осваиваем мониторинг с Prometheus. Часть 1. Знакомство и установка
- Ускоряем установку пакетов в Debian (libeatmydata)
- Строгий календарь 2019
- Оконный менеджер i3
- Строгий календарь 2018
- Мой лончер на базе Dmenu
- Как случайно не выключить сервер по ssh
- Делаем загрузочный образ из контейнера
- Использование утилиты debootstrap
- Запускаем Debian в chroot-окружении
- Строгий календарь 2017
- Запускаем Debian в контейнере systemd-nspawn
- Ручная установка минимального Debian-based Linux (Install Debian the Archlinux way)
- Trap — обработка сигналов и ошибок в Bash
- Мои впечатления от Gentoo Linux
- Жизнь с комфортом в Openbox WM
- Гистограммы в гнуплоте
- Особенности гнуплота под Windows
Copyright © 2021 Vasily Laur — Powered by Hugo.