Gnuplot как построить график из файла

Gnuplot как построить график из файла

Gnuplot умеет интерактивно строить графики, беря данные из файла, а также умеет эти графики пихать в файлы картинок любого формата ( особено png =) ). Так же он умеет строить сразу несколько графиков на одном полотне.
Файл данных графика можно формировать разными способами, однако удобнее всего для наших задач файл сформировать в следующем виде:

data.log
# index U[index] exact_U[index]
0 1.0 1.0
0.2 1.1 1.09
0.4 1.2 1.18
0.6 1.3 1.35
0.8 1.1 1.13
1 1.05 1.05
# end of log file

здесь:

  • первый столбец — это координата x (может быть время, может быть x(наш случай))
  • второй столбец — это значение нашего решения в точке x (в нашем случае T = 1)
  • третий столбец — это значение данного точного решения в той же точке
  • # — любая строка, начинающаяся с символа # — это комментарий. игнорируется gnuplot’ом при построении графиков

// желателно, чтобы в начальных и конечных точках точное и наше решения совпадали. не для gnuplot’a разумеется, а для сдачи задания 😀

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

Пусть U — это массив значений приближенного решения на данном слое (в частности, в конце, перед выходом из программы U[j] = U(T, h*j))
Пусть exact_U(t, x) — это функция точного решения. Мы будем смотреть на значения exact_U(T, h*j).

Перед выходом из программы необходимо распечатать в файл следующие данные: x, U, exact_U.
На С++ это будет выглядеть так (не забудьте подключить fstream: #include ):

Итак, data.log — сгенерированный файл данных. Его надо положить рядом с файлом gnuplot.exe, чтобы его было проще вызывать.

Запускаем командную строку, переходим в папку с gnuplot.exe и запускаем его:

пуск->выполнить->cmd.exe
> D:
> cd programsgnuplot
> gnuplot.exe

На что получаем приглашение gnuplot и его милое приветствие =)

Далее все просто — просим построить графики:

gnuplot > plot ‘data.log’ u 1:2 w linesp, ‘data.log’ u 1:3 w linesp

Вот, собственно и все. Пояснение:

  • plot — просим строить 2x-мерный график (можно и 3x-мерные строить с помощью splot)
  • ‘data.log’ — файл с данными
  • u 1:2 == usage 1:2 — строить график по точкам из первого и второго столбца, где первый столбец — OX, второй — OY
  • w linesp == with linesp — точки графика соединять отрезками

В простейшем случае, если просто сказать:

gnuplot > plot ‘data.log’

gnuplot будет откладывать все точки слева направо по принципу (i, y_i), где i — номер вхождения точки.

Для того чтобы получить файл graph.png с графиком нужно выполнить следующие команды в gnuplot:

gnuplot > set terminal png size 1024, 768
gnuplot > set output ‘graph.png’
gnuplot > plot ‘data.log’ u 1:2 w linesp, ‘data.log’ u 1:3 w linesp

и у вас в папке с gnuplot’ом появится файл graph.png с размером 1024×768. Его можно вставить в отчет. Будет круто)

Читайте также:  Пошлые картинки из символов

Предположим мы хотим нарисовать функцию sin(x^2 + y^2)/(x^2 + y^2) (красивый график, похожий то, что произойдет после падения капли в воду).

В программе заводим массив a[N][N], программно вычисляем значение в точке (x, y), заносим это значение в a[i][j]. В конце записываем матрицу, как есть, в файл. Получаем нечто вроде:

Просим gnuplot нарисовать картинку:

gnuplot > splot ‘matrix.dat’ matrix with lines

отрисовывать можно с разными параметрами, например:

  • splot ‘file’ matrix with lines — соединять точки графика прямыми
  • splot ‘file’ matrix with pm3d — соединять точки поверхностью (поверхность меняет цвет в зависимости от значения функции (линии уровня))
  • set pm3d at b (s) — рисовать внизу (наверху) поверхность уровней
  • unset pm3d — отменяет предыдущую команду
  • set view a,b — показать график под углом a, b (нужно для красивой отрисовки картинок)
  • set ticslevel 0 (1) — график центрирован по z (график приподнят (удобно использовать совместно с set pm3d at b)
  • set palette defined ( z1 "color1", z2 "color 2", . ) — определять цвета линий уровня, чтобы сделать график красивым. цвета можно посмотреть здесь

Что получилось, смотрим здесь: with lineswith pm3d
Примеры и прочее см. 8. Ссылки

Если хочеться мультика, то можно сделать такую штуку.

После каждой итерации выводим матрицу a в файл, генерируем скрипт для gnuplot, передаем ему управление (временно усыпив программу, чтобы она не испортила файл данных). Потом открываем папку, где будут лежать кучка кратинок: 1.png, 2.png, . ; открываем просмотрщик, жмем "—>" и наслаждаемся.

Кусок кода для Visual Studio:

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

В gnuplot есть интерактивная помощь. Ее всегда можно вызвать из командной строки gnuplot набрав help:

Освоить основные принципы работы в Gnuplot легко:

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

Где скачать Gnuplot?

Скачать можно с официального сайта http://gnuplot.info.

Linux

Windows

Запуск Gnuplot

В консоли запускаем Gnuplot командой

И увидим приветствие программы

Вывод Gnuplot при запуске

Это интерактивный режим работы — когда мы пишем команды и Gnuplot их сразу выполняет.

Построить график функции

И получим такой график

График функции Sin(x) построенный в Gnuplot

Разберем подробнее команду

plot — команда для построения или отрисовки графика, sin(x) — функция для отрисовки, синус. По умолчанию x играет роль переменной.

Так как мы еще не настраивали вид графиков, то по умолчанию ось OX или x у нас в интервале от -10 до 10. Ось OY или y подстраивается автоматически от минимума до максимума, за исключением особых точек на графике, например — бесконечность.

Если есть особые точки на графике как бесконечность

Построить график из файла данных

Что бы построить график из файла данных "data.txt" воспользуемся командой

И получим такой рисунок

График построенный из файла данных в Gnuplot

plot — команда построить график "data.txt" — файл данных, пример файла здесь, подробнее о том какого он должен быть формата и чего там не должно быть будет изложено в другой статье.

Читайте также:  Анонимный прием платежей на сайте

И разумеется, Gnuplot не телепат, не знает где лежат ваши файлы, по умолчанию он берет файлы из директории или папки в которой он запущен. Ее вы можете узнать командой

Можно также указать полное имя от корневой директории "/" , например "/home/black/програмирование/Сайт/dev.asifmoda.com/текста/скрипты/data.txt" . Так же не забывайте что имя файла нужно вводить в кавычках, в Ubuntu 16 работают как одинарные, так и двойные кавычки.

u — сокращение от using , то есть использовать. В файле находится две колонки цифр разделенные пробелами, 1 означает для x использовать первую колонку, далее двоеточие, и 2 — использовать вторую колонку для y . Если указано 0, то используется порядок цифр или другими словами номер строки начиная с нуля. Разумеется, можно в качестве x использовать разные колонки цифр. w — сокращение от with , и вместе с l — сокращение от line , линия означает построить график линиями.

Данные должны располагаться по столбцам и разделяться пробелами или табуляцией:

Строки, следующие за символом ‘#’ , являются комментариями и игнорируются gnuplot.

Простейший график

График по данным столбцов 1 и 2 строится следующим образом:

Несколько кривых в общих осях координат

Пусть первая кривая строится на основе данных из столбцов 1 и 2 файла data.txt (который находится в текущем каталоге), а вторая использует данные из столбцов 1 и 3. Обе кривые строятся в общих осях координат с помощью следующей команды:

Перейдем к настройке параметров графика.

Настройка отображения данных

Для двумерных графиков используются следующие стили представления данных:

полная команда сокращение рисует график
with lines w l линией
with dots w d точками минимального размера
with points w p маркерами разной формы
with linespoints w lp линиями и маркерами разной формы
with boxes w b столбцами гистограммы

Рисуем график линиями

Если в файле данных встретится пустая строка, на ее месте в линии графика появится разрыв. Например, вставив пустую строку перед двумя последними строками файла data.txt

Цвет линии linecolor ( lc ):

номер цвет линии
-1

Рисуем график синей линией:

или, что то же самое,

Толщина линии определяется параметром linewidth ( lw ). 1 — значение по умолчанию.

Принимаются дробные значения толщины:

Тип линии linetype ( lt ) представляет собой сочетание цвета и стиля соединительной линии

номер цвет стиль
-1 черный сплошная
черный пунктир
1 красный сплошная
2 зеленый штрих
3 синий пунктир
4 фиолетовый штрих-пунктир
5 голубой штрих-двойной пунктир
6 желтый сплошная
7 серый штрих
8 красный короткий штрих
9 серый штрих-пунктир
10 красный штрих-двойной пунктир

Но вначале нужно разрешить создание несплошных линий, установив опцию dashed :

Без установки этой опции изменится только цвет линии. Вернемся к отображению сплошных линий:

Нужный тип и цвет линии устанавливаются комбинацией linetype и linecolor . Строим график зеленой штрих-пунктирной линией:

Мы вернули опцию dashed . Она будет сохранять значение при построении всех следующих графиков, до тех? пока не сменится на solid .

Нарисуем график черными точками:

Чтобы точки данных были более заметны, существуют маркеры ( points ) различных типов ( pointtype или pt ).

Читайте также:  Яндекс навигатор для леса
номер тип маркера
1 +
2 х
3 *
4 квадратик
5 заполненный квадратик
6 кружочек
7 заполненный кружочек
8 треугольник
9 заполненный треугольник
10 перевёрнутый треугольник
11 заполненный перевёрнутый треугольник
12 алмаз
13 заполненный алмаз
14 пятиугольник
15 заполненный пятиугольник

Нечетные номера соответствуют закрашенным маркерам, четные — незакрашенным.

График с маркерами-треугольниками:

Размер маркера регулируется параметром pointsize ( ps ). Значение по умолчанию равно 1. Дробные размеры допустимы.

Построим график с линией зеленого цвета и маркерами — заполненными кружками размера 3:

Оси и сетка

Оси графика по умолчанию подгоняются под границы данных. Указать границы изменения данных по осям можно с помощью команд set xrange и set yrange . Например, изменим диапазон изменения данных по оси y :

Сделать это нужно до команды рисования. Однако в диалоговом режиме работы удобно вначале построить график, а затем установить нужный диапазон и перерисовать график командой replot :

Команды set autoscale <|x|y>, set autoscale x , set autoscale y устанавливают автоматическое масштабирование по обеим осям или по заданной оси. set logscale <|x|y>устанавливает логарифмическую шкалу.

По умолчанию gnuplot отображает верхнюю, нижнюю, левую и правую оси координат. Для удаления этих осей используется опция set border n . Каждой оси присваивается целое значение: нижней — 1 , левой — 2 , верхней — 4 и правой — 8 . Значение n — это сумма введеных значений. Например, оси x (нижняя) и y (левая) отображаются при n = 3 . Команда set border влияет только на сами линии границ, так что деления остаются даже при n = 0 . Для того, чтобы стереть их, нужно использовать set notics или set tics nomirror .

Удалим верхнюю и правую оси координат.

Если перед этим устанавливалась логарифмическая шкала, отмените ее и перестройте график:

Иногда, по требованиям к оформлению графика, необходимо построить ось, проходящую через 0.

Для этого следует использовать команду set zeroaxis .

По умолчанию, нулевая ось отрисовывается точками, однако это легко переопределяется командами linetype и lw line_width . Например, добавим к предыдущему:

Сетка на графике отображается командой set grid :

Сделать оси квадратными (то есть обе оси будут равной длины и масштаба) можно командой:

Надписи

Вернемся к настройкам по умолчанию:

Установим заголовок графика и подписи к осям

Символ ‘
‘ отвечает за перенос заголовка на новую строку.

Убрать выводимую по умолчанию легенду (обозначение рядов данных) можно командой set nokey или set key off .

Разместим легенду в правом нижнем углу:

Команды установки подписей можно дополнить установками шрифтов. Например,

Шрифт делений устанавливается командой set <|x|y>tics . Например, зададим (предварительно сделав reset ):

Сохранение графика в файле

gnuplot может не только выводить графики на экран, но и сохранять их в файлы различных графических форматов, таких как PNG, EPS, SVG, JPEG и множество других. Программа также может генерировать код на LaTeX, позволяя использовать шрифты и формулы LaTeX.

Установка формата вывода осуществляется командой set terminal . Сохраним график в файле формата PNG:

Указать размеры изображения можно с помощью опции size . Так, указав в примере выше set terminal png size 800,600 , получим выходной файл размера 800х600 пикселей.

Ссылка на основную публикацию
Adblock
detector