Данные должны располагаться по столбцам и разделяться пробелами или табуляцией:
# Файл data.txt
# x y1 y2
0.000 0 0
0.001 104 51
0.002 202 101
0.003 298 148
0.0031 290 149
0.004 289 201
0.0041 291 209
0.005 310 250
0.010 311 260
0.020 280 240
Строки, следующие за символом '#'
, являются комментариями и игнорируются gnuplot.
Простейший график
График по данным столбцов 1 и 2 строится следующим образом:
gnuplot> plot "/путь/к/файлу/data.txt" using 1:2
Несколько кривых в общих осях координат
Пусть первая кривая строится на основе данных из столбцов 1 и 2 файла data.txt
(который находится в текущем каталоге), а вторая использует данные из столбцов 1 и 3. Обе кривые строятся в общих осях координат с помощью следующей команды:
gnuplot> plot "data.txt" using 1:2 title "First",\
"data.txt" using 1:3 title "Second"
Перейдем к настройке параметров графика.
Настройка отображения данных
Для двумерных графиков используются следующие стили представления данных:
полная команда | сокращение | рисует график |
---|---|---|
with lines | w l | линией |
with dots | w d | точками минимального размера |
with points | w p | маркерами разной формы |
with linespoints | w lp | линиями и маркерами разной формы |
with boxes | w b | столбцами гистограммы |
Рисуем график линиями
gnuplot> plot "data.txt" using 1:2 with lines
Если в файле данных встретится пустая строка, на ее месте в линии графика появится разрыв. Например, вставив пустую строку перед двумя последними строками файла data.txt
# Файл data.txt
# x y1 y2
...
0.005 310 250
0.010 311 260
0.020 280 240
получим:
Цвет линии linecolor
(lc
):
номер | цвет линии |
---|---|
-1 | черный |
1 | красный |
2 | зеленый |
3 | синий |
4 | фиолетовый |
5 | голубой |
6 | желтый |
7 | черный |
8 | оранжевый |
9 | серый |
Рисуем график синей линией:
gnuplot> plot "data.txt" using 1:2 with lines linecolor 3
или, что то же самое,
gnuplot> p "data.txt" u 1:2 w l lc 3
Толщина линии определяется параметром linewidth
(lw
). 1 — значение по умолчанию.
gnuplot> plot "data.txt" using 1:2 with lines linecolor 3 linewidth 4
Принимаются дробные значения толщины:
gnuplot> plot "data.txt" using 1:2 with lines lw 0.3
Тип линии linetype
(lt
) представляет собой сочетание цвета и стиля соединительной линии
номер | цвет | стиль |
---|---|---|
-1 | черный | сплошная |
0 | черный | пунктир |
1 | красный | сплошная |
2 | зеленый | штрих |
3 | синий | пунктир |
4 | фиолетовый | штрих-пунктир |
5 | голубой | штрих-двойной пунктир |
6 | желтый | сплошная |
7 | серый | штрих |
8 | красный | короткий штрих |
9 | серый | штрих-пунктир |
10 | красный | штрих-двойной пунктир |
Но вначале нужно разрешить создание несплошных линий, установив опцию dashed
:
gnuplot> set termoption dashed
gnuplot> plot "data.txt" using 1:2 with lines lynetype 5
Без установки этой опции изменится только цвет линии. Вернемся к отображению сплошных линий:
gnuplot> set termoption solid
gnuplot> plot "data.txt" using 1:2 with lines lynetype 5
Нужный тип и цвет линии устанавливаются комбинацией linetype
и linecolor
. Строим график зеленой штрих-пунктирной линией:
gnuplot> set termoption dashed
gnuplot> plot "data.txt" using 1:2 with lines lynetype 4 linecolor 6
Мы вернули опцию dashed
. Она будет сохранять значение при построении всех следующих графиков, до тех? пока не сменится на solid
.
Нарисуем график черными точками:
gnuplot> plot "data.txt" using 1:2 with dots linecolor -1
Чтобы точки данных были более заметны, существуют маркеры (points
) различных типов (pointtype
или pt
).
номер | тип маркера |
---|---|
1 | + |
2 | х |
3 | * |
4 | квадратик |
5 | заполненный квадратик |
6 | кружочек |
7 | заполненный кружочек |
8 | треугольник |
9 | заполненный треугольник |
10 | перевёрнутый треугольник |
11 | заполненный перевёрнутый треугольник |
12 | алмаз |
13 | заполненный алмаз |
14 | пятиугольник |
15 | заполненный пятиугольник |
Нечетные номера соответствуют закрашенным маркерам, четные — незакрашенным.
График с маркерами-треугольниками:
gnuplot> plot "data.txt" using 1:2 with points pointtype 8
Размер маркера регулируется параметром pointsize
(ps
). Значение по умолчанию равно 1. Дробные размеры допустимы.
Построим график с линией зеленого цвета и маркерами — заполненными кружками размера 3:
gnuplot> plot "data.txt" using 1:2 with linespoints linecolor 2 pointtype 7 pointsize 3
или
gnuplot> plot "data.txt" using 1:2 w lp lc 2 pt 7 ps 3
Оси и сетка
Оси графика по умолчанию подгоняются под границы данных. Указать границы изменения данных по осям можно с помощью команд set xrange
и set yrange
. Например, изменим диапазон изменения данных по оси y
:
gnuplot> set yrange [0:500]
gnuplot> plot "data.txt" using 1:2 with lines
Сделать это нужно до команды рисования. Однако в диалоговом режиме работы удобно вначале построить график, а затем установить нужный диапазон и перерисовать график командой replot
:
gnuplot> plot "data.txt" using 1:2 with lines
gnuplot> set yrange [0:500]
gnuplot> replot
Команды set autoscale {|x|y}
, set autoscale x
, set autoscale y
устанавливают автоматическое масштабирование по обеим осям или по заданной оси. set logscale {|x|y}
устанавливает логарифмическую шкалу.
gnuplot> set logscale x
gnuplot> plot "data.txt" using 1:2 with lines
По умолчанию gnuplot отображает верхнюю, нижнюю, левую и правую оси координат. Для удаления этих осей используется опция set border n
. Каждой оси присваивается целое значение: нижней — 1
, левой — 2
, верхней — 4
и правой — 8
. Значение n
— это сумма введеных значений. Например, оси x
(нижняя) и y
(левая) отображаются при n = 3
. Команда set border
влияет только на сами линии границ, так что деления остаются даже при n = 0
. Для того, чтобы стереть их, нужно использовать set no{x|y}tics
или set {x|y}tics nomirror
.
Удалим верхнюю и правую оси координат.
gnuplot> set border 3
gnuplot> set xtics nomirror
gnuplot> set ytics nomirror
gnuplot> plot "data.txt" using 1:2 with lines
Если перед этим устанавливалась логарифмическая шкала, отмените ее и перестройте график:
gnuplot> unset logscale
gnuplot> replot
Иногда, по требованиям к оформлению графика, необходимо построить ось, проходящую через 0.
Для этого следует использовать команду set {x|y}zeroaxis
.
gnuplot> set yrange [-100:500]
gnuplot> set xzeroaxis
gnuplot> plot "data.txt" using 1:2 with lines
По умолчанию, нулевая ось отрисовывается точками, однако это легко переопределяется командами linetype
и lw line_width
. Например, добавим к предыдущему:
gnuplot> set xzeroaxis linetype -1
gnuplot> replot
Сетка на графике отображается командой set grid
:
gnuplot> set grid
gnuplot> replot
Сделать оси квадратными (то есть обе оси будут равной длины и масштаба) можно командой:
gnuplot> set size square
Надписи
Вернемся к настройкам по умолчанию:
gnuplot> reset
Установим заголовок графика и подписи к осям
gnuplot> set title "Very long\ntitle"
gnuplot> set xlabel "X"
gnuplot> set ylabel "Y"
gnuplot> plot "data.txt" using 1:2 with lines
Символ '\n'
отвечает за перенос заголовка на новую строку.
Убрать выводимую по умолчанию легенду (обозначение рядов данных) можно командой set nokey
или set key off
.
Разместим легенду в правом нижнем углу:
gnuplot> set key bottom right
gnuplot> replot
Команды установки подписей можно дополнить установками шрифтов. Например,
set title "New Title" font "Times New Roman, 40"
set xlabel "X AXIS" font "Helvetica, 20"
set ylabel "Y Axis" font "Times New Roman Italic, 32"
Шрифт делений устанавливается командой set {|x|y}tics
. Например,
зададим (предварительно сделав reset
):
gnuplot> set tics font "Times New Roman Italic, 12"
gnuplot> replot
Сохранение графика в файле
gnuplot может не только выводить графики на экран, но и сохранять их в файлы различных графических форматов, таких как PNG, EPS, SVG, JPEG и множество других. Программа также может генерировать код на LaTeX, позволяя использовать шрифты и формулы LaTeX.
Установка формата вывода осуществляется командой set terminal
. Сохраним график в файле формата PNG:
gnuplot> set terminal png
gnuplot> set output "graph.png"
gnuplot> plot "data.txt" using 1:2 with lines
Файл graph.png
:
Указать размеры изображения можно с помощью опции size
. Так,
указав в примере выше set terminal png size 800,600
, получим выходной файл размера 800х600 пикселей.
Получение справки
gnuplot> help
или
gnuplot> help имя_команды
Ссылки
- Janert Ph. K. Gnuplot in Action: Understanding Data with Graphs, Manning Publications, 2009, 398 p.
- Not so FAQ (перевод на русский){rel=nofollow}
- Demo scripts
- Using Gnuplot
- Create scientific plots using gnuplot
- Tricks for experts
Комментарии
comments powered by Disqus