Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Gnuplot - предок утилит для построения графиков

Оригинал: Gnuplot-the Grandfather of Graphing Utilities
Автор: Joey Bernard
Дата публикации: 18 Февраля 2013 г.
Перевод: А.Панин
Дата перевода: 3 Марта 2013 г.

В своей колонке я рассмотрел некоторые пакеты для проведения научных расчетов в различных областях исследований. Также я не обошел вниманием различные пакеты для графического представления результатов этих расчетов. Но до этого времени я все еще не рассматривал gnuplot (http://www.gnuplot.org). Программа gnuplot известна с середины 1980-х годов и, таким образом, является одной из старейших программ для построения графиков. Ввиду долгого существования, программа была портирована на большинство используемых операционных систем. В данной статье я рассмотрю основные характеристики программы gnuplot и опишу различные способы ее использования.

Gnuplot является программой с интерфейсом командной строки. Благодаря этой особенности данная программа используется для построения графиков совместно с некоторыми другими приложениями, такими, как octave. Следовательно, вы могли использовать gnuplot, даже не подозревая об этом. Вы можете использовать gnuplot несколькими способами. Программа может не только принимать данные для построения графика, но и строить графики для заданных функций. Gnuplot может осуществлять вывод как на экран (выводя статический или интерактивный график), так и в файл одного из множества поддерживаемых форматов. Дополнительно существует множество функций для настройки отображения графиков, изменения обозначений графиков и осей координат, а также изменения других параметров.

Давайте начнем работу с установки gnuplot. Бинарные пакеты существуют для множества различных операционных систем. Большинство дистрибутивов Linux также должны предоставлять возможность использования пакета gnuplot, поэтому установка не будет вызывать затруднений. Если же вам необходимы функции из новейших версий программы, вы всегда можете скачать исходные коды и самостоятельно произвести сборку gnuplot.

Как только пакет gnuplot установлен, вы можете начать работу с ним, выполнив команду gnuplot. При вызове программы таким способом, для ввода команд будет запущена интерактивная сессия. Давайте начнем работу с попытки построения графика для простейшей функции. У вас должна быть возможность построения графиков для всех функций, используемых при работе с языками программирования C, FORTRAN и BASIC. Эти математические выражения могут формироваться с использованием таких встроенных функций, как abs(x), cos(x) или Bessel. При работе с этими функциями вы можете использовать целые, действительные и комплексные типы аргументов.

При использовании gnuplot для построения графика вы можете либо сохранить все команды в одном файле и использовать его в качестве сценария для gnuplot, либо запустить gnuplot в интерактивном режиме и вводить эти команды с помощью командного окружения поочередно. Для использования сценария gnuplot вам необходимо просто добавить имя файла к команде при запуске программы - например:
gnuplot сценарий_для_выполнения
При использовании gnuplot в интерактивном режиме вы можете прервать сессию с помощью команды quit. Двумя основными командами являются plot и splot. Команда plot позволяет строить двухмерные графики, а splot - трехмерные. Для построения графика простой функции вы можете использовать команду:
plot sin(x)/x
Эта команда позволяет построить график в новом окне (Рисунок 1). Если вы хотите добавить обозначение графика, вы можете использовать следующий параметр:
plot sin(x)/x title "Example 1"

При использовании команд для построения графиков открываются окна с выводом результатов
Рисунок 1: При использовании команд для построения графиков открываются окна с выводом результатов

Простой график для функции sin(x)/x
Рисунок 2: Простой график для функции sin(x)/x

Вы даже можете построить графики нескольких функций в одном окне с помощью команды:
plot sin(x)/x title "Example 1", sin(x) title "Example 2"

Вы можете построить графики нескольких функций в одной системе координат
Рисунок 3: Вы можете построить графики нескольких функций в одной системе координат

Для построения трехмерного графика, просто передайте выражение с двумя независимыми переменными команде splot так, как показано ниже:
splot x**2+y**2

Gnuplot может работать даже с трехмерными графиками
Рисунок 4: Gnuplot может работать даже с трехмерными графиками

Если вы столкнетесь с трудностями, в первую очередь следует использовать встроенную функцию помощи. Для того, чтобы узнать подробности использования команды plot, выполните следующую команду:
help plot

В результате будет выведена страница из документации gnuplot, относящаяся к команде plot.

Здорово, если вы просто пытаетесь рассмотреть графические представления различных выражений, но в реальной науке часто приходится собирать данные для построения графиков в ходе экспериментов, а на основании построенных графиков делать выводы о происходящих процессах. Gnuplot также поддерживает данный режим работы. Для активизации данного режима вам нужно просто ввести имя файла, содержащего данные для построения графика. Данные в файле должны быть упорядочены в виде столбцов, а столбцы должны разделяться пробелами. Любые строки, начинающиеся с символа # считаются комментариями и игнорируются gnuplot. Если ваш файл содержит несколько столбцов с данными, с помощью параметров команд plot или splot вы можете выбрать столбцы, данные из которых будут использованы при построении графика. Например, представим, что у вас есть файл со значениями температуры и давления для каждого из дней. Вы можете построить график изменения температуры с помощью команды:
plot "weather.dat" using 1:2 title "Temperature"
Если вам необходимо построить график изменения давления, вы можете использовать следующую команду:
plot "weather.dat" using 1:3 title "Pressure"
Если же вам необходимо построить график, используя данные из всех трех столбцов, вы можете использовать команду:
splot "weather.dat"

Существуют два метода изменения представления графиков, создаваемых gnuplot. Первый метод заключается в использовании дополнительных аргументов команд plot и splot. В этом случае вы можете задавать значения таких параметров, как заголовок графика, обозначение осей или стиль графика. Доступными стилями графиков являются: линии (lines), точки (points), линии с точками (linespoints), импульсы (impulses), штрихи (dots), шаги (steps, fsteps, histeps), значения отклонений (errorbars, xerrorbars, yerrorbars, xyerrorbars). Для работы с одним из стилей вы можете добавить параметр, используя ключевое слово with. Таким образом, если вы хотите отобразить на графике и линии и точки, вы должны добавить выражение with linespoints к вашей команде plot. Вы также можете использовать краткую запись этих параметров. Вместо with может использоваться w. Вместо параметра title может использоваться t. Вместо приведенного выше параметра using вы также можете использовать u.

Вторым методом изменения представления графиков является использование команды set. С помощью этой команды вы можете устанавливать значения некоторых параметров графиков. Используя второй метод, вы можете изменять значения параметров всех типов, таких, как title, xlabel, yrange, xtics или key, а также многих других. Например, вы можете установить диапазон значений по оси у с помощью команды:
set yrange [20:500]
После изменения различных параметров графиков, вам необходимо выполнить повторное построение графика, над которым вы работаете. Вы можете сделать это с помощью команды:
replot
Многие параметры, изменяющиеся с помощью команды set, также используют форму краткой записи. Например, краткая запись приведенной выше команды будет выглядеть следующим образом:
set yr [20:500]
Утилита gnuplot позволяет не только строить графики на основе введенных данных или функций, но также способна проводить анализ используемых данных. Например, с помощью gnuplot вы можете осуществить подбор кривых для заданных данных. Для этого следует задать функцию вместе с начальными значениями переменных, после чего использовать команду fit. Пример будет выглядеть следующим образом:
f1=a1*tanh(x/b1)
a1=300; b1=0.005;
fit f1(x) 'data_file.dat' using 1:2 via a1,b1

Данные команды позволяют осуществить с помощью gnuplot подбор кривых для данных из столбцов 1 и 2 файла data_file.dat с использованием функции, заданной с помощью выражения f1(x).

Когда программное окружение для проведения исследований в определенной области подготовлено, вы можете сохранить все сделанные вами настройки с помощью команды save. Данная команда на самом деле сохраняет все использованные вами команды gnuplot в текстовый файл. Данный текстовый файл может быть загружен после открытия новой сессии gnuplot с помощью команды load. Она позволяет получить из файла все сохраненные команды и выполнить их в рамках новой сессии.

Вы всегда можете увидеть список установленных вами параметров, использовав команду show. Эта команда выводит значения параметров, установленные в ходе текущей сессии. Для вывода списка всех параметров следует использовать команду show all. Иногда после изменения параметров программа начинает работать не так, как вы ожидаете. Следует помнить о том, что вы всегда можете установить значение по умолчанию для любого параметра, значение которого было изменено с помощью команды set, просто использовав команду reset. Эта команда изменяет значения параметров на их значения по умолчанию в рамках сессии.

Иногда вам может возникнуть необходимость взаимодействия с системой, в которой работает gnuplot. В этих случаях вам придется открывать сессию командной оболочки из gnuplot. Существует два способа выполнения этой задачи. Первый способ заключается в использовании команды system. В этом случае вы можете передать строку, содержащую системные команды для их выполнения вне gnuplot. Второй способ заключается в использовании команды !. На самом деле эта команда является всего лишь краткой формой записи команды system и эти команды являются взаимозаменяемыми.

В данной статье освещены только основные функции, предоставляемые программой gnuplot. Наверняка вам потребуется дополнительное время на более глубокое изучение документации с целью получения информации о дополнительных возможностях анализа ваших данных. Даже в том случае, если вы непосредственно не используете gnuplot, дополнительная информация о данной программе поможет вам в работе с такими приложениями, как octave. Рассматривайте эту статью как отправную точку в исследовании возможных способов анализа данных.