Построение графиков функций linux

Знакомимся с Gnuplot

Gnuplot — это кроссплатформенная unix-way утилита для рисования графиков. Вы можете сделать графики в привычном MS Excel или LibreOffice Calc, но… Что вы будете делать, если понадобится нарисовать нечто более сложное, быстро и не руками? Например, такое:

Пример сложного графика в Gnuplot

Gnuplot or not: когда это нужно?

  • Когда вы хотите автоматизировать процесс построения графиков, а не заниматься ручным набиванием чисел в таблицу Excel.
  • Если приходится (предстоит в ближайшем будущем) строить графики много и часто.
  • Когда вашей программе нужно простое средство визуализации.
  • Когда встроенных в Excel возможностей не хватает. Там можно строить в полярных координатах? А в сферических? А делать анимацию?
  • Когда нужна картинка в векторном формате ( .svg , .eps ).
  • Если вы верстаете в LaTeX и заинтересованы в качественных, векторных графиках.

Гнуплот не нужен, если

  • Имеющиеся инструменты вас вполне устраивают. Вы — гуру Matlab, Mathcad или Wolfram Mathematica.
  • Графики приходится строить редко.
  • Вы не дружите с программированием, командной строкой, скриптами и даже не хотите знать, что это такое.

Гнуплот прекрасен! Возможно даже, что я проникся CLI именно во время освоения этой утилиты. Рекомендую бегло ознакомиться с ее возможностями на официальном сайте.

Гнуплот поддерживает кучу форматов файлов, как векторных, так и растровых. Разумеется, можно выводить результат сразу на экран.

Самое ценное его качество — интерфейс командной строки, позволяющий строить графики из других программ, используя каналы (pipelines). Поэтому гнуплот окажется очень кстати, если вы пишете маленькую демонстрационную программку (какие-нибудь численные методы), графический интерфейс которой занимал бы добрую половину кода.

Читайте также:  Linux which process memory usage

Различия между 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 не даёт окну с графиком закрыться по окончании работы скрипта.

С чего начать?

  1. Успокоиться и взять себя в руки.
  2. Самое сложное поначалу — не пытаться работать с этим как с MS Excel. У вас не получится построить график, просто потыкав мышкой.
  3. Рекомендую пройтись по всем разделам примеров, чтобы взять какой-нибудь за основу. К сожалению, там описаны не все фишки.
  4. Сперва нужно четко понять, что вы хотите изменить (хочу легенду слева, линии другим цветом, подписи к осям), затем найти команду, отвечающую за эти действия. Поменять можно почти всё. Я до сих пор нахожу что-то новое.
  5. В конце статьи я привел несколько хороших, проверенных ссылок. Когда сам что-то забываю, они меня выручают.
  6. Если ничего не помогает, тогда читать документацию. К сожалению, в официальном FAQ нет ни одной картинки. Поиск выручает.
Читайте также:  Embedded version of linux

О терминалах

Терминал в данном случае — это то место, где вы увидите график. Приведу наиболее часто используемые:

  • Оконные: 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.
  • Поскольку на блогспоте сидит много линуксоидов, логично поискать именно там.
Читайте также:  What is better windows mac or linux

Все статьи

  • Строгий календарь 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.

Источник

Оцените статью
Adblock
detector