Date Редакция Категория sci Теги gnuplot / графика

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

    # Файл 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

using12.png

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

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

gnuplot> plot "data.txt" using 1:2 title "First",\
              "data.txt" using 1:3 title "Second"

using123.png

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

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

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

полная команда сокращение рисует график
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

wl.png

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

    # Файл data.txt
    # x              y1             y2 
    ...
    0.005            310            250

    0.010            311            260
    0.020            280            240

получим:

wl_blank_line.png

Цвет линии 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

wl_lc3.png

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

gnuplot> plot "data.txt" using 1:2 with lines linecolor 3 linewidth 4

wl_lc3lw4.png

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

gnuplot> plot "data.txt" using 1:2 with lines lw 0.3

wl_lw03.png

Тип линии 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

wl_lt5_dashed.png

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

gnuplot> set termoption solid
gnuplot> plot "data.txt" using 1:2 with lines lynetype 5

wl_lt5.png

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

gnuplot> set termoption dashed
gnuplot> plot "data.txt" using 1:2 with lines lynetype 4 linecolor 6

wl_lt4lc6.png

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

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

gnuplot> plot "data.txt" using 1:2 with dots linecolor -1

wd_lc-1.png

Чтобы точки данных были более заметны, существуют маркеры (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

wp_pt8.png

Размер маркера регулируется параметром 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

wlp_lc2pt7ps3.png

Оси и сетка

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

gnuplot> set yrange [0:500]
gnuplot> plot "data.txt" using 1:2 with lines

syr.png

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

slsx.png

По умолчанию 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

sb3.png

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

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

gnuplot> set yrange [-100:500]
gnuplot> set xzeroaxis
gnuplot> plot "data.txt" using 1:2 with lines

sxza.png

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

gnuplot> set xzeroaxis linetype -1
gnuplot> replot

sxza_lt-1.png

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

gnuplot> set grid
gnuplot> replot

sg.png

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

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

stl.png

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

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

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

gnuplot> set key bottom right
gnuplot> replot

stl_sk.png

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

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"

sf.png

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

gnuplot> set tics font "Times New Roman Italic, 12"
gnuplot> replot

sft.png

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

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:

graph.png

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

Получение справки

gnuplot> help

или

gnuplot> help имя_команды

Ссылки



Комментарии

comments powered by Disqus