GNUPLOT

-не так Часто Задаваемые Вопросы-

обновлено 2010/12/26

Построение числовых данных из файла (No.1)

1 | 2 | 3 |

Возможно, большинство из любителей gnuplot используют это приложение в области науки для посторения графика с целью построения графиков результатов от расчетов или экспериментальных данных. Они видят результаты на мониторе, вносят некоторые коррективы, сравнивают расчетные результаты с экспериментальными данными, и т.д. Если расчеты выполнены верно, то их сохраняют в формат postscript и печатаю на принтере, в противном случае файл EPS может быть включен в документ TeX научной статьи...

Что такое формат, который gnuplot может распознать?

2D данные

В файле столбцы данных разделяются пробелами и табуляторами. Если строка начинается со значка "#", то она игнорируется. Gnuplot может прочитать файлы любого формата, для этого необходимо указать формат файла. Смотри gnuplot help "using".

#  X     Y   
   1.0   1.2 
   2.0   1.8 
   3.0   1.6 

Например, если у вас двумерный массив, одна строка содержит пары X и Y, как у казанно выше. Если X и Y неопределены, необходимо задать дополнительную колонку для погрешностей. Порядок столбцов не важен, потому что вы можете указать какой столбец используется для X, а какой для Y. Если первый столбец - значения X, а второй - значения Y, используем опцию using следующим образом:

gnuplot> plot "test.dat" using 1:2

Если опция using не используется, то первый столбец задается как значения X, а второй как значения Y автоматически.

Есть 2 способа заполнить бар погрешностей значениями Y. Первый способ - плюс/минус Z неопределенность значений Y. Второй способ - значения Y находящиеся в диапозоне [Z1,Z2]. В этом случае значения бара погрешностей больше и меньше значений Y. Первый случай требует 3 колонки данных, а последний - 4 колонки данных.

#  X     Y     Z 
   1.0   1.2   0.2
   2.0   1.8   0.3
   3.0   1.6   0.2
fig/sample7.1a
#  X     Y     Z1    Z2
   1.0   1.2   0.8   1.5
   2.0   1.8   0.3   2.3
   3.0   1.6   1.0   2.1
fig/sample7.1b

Для построения этих данных, необходима опция using.

gnuplot> plot "test.dat" using 1:2:3 with yerrorbars
gnuplot> plot "test.dat" using 1:2:3:4 with yerrorbars

Число столбцов, необходимых для постороения, зависит от вида рисунка, который приводится дальше.

Формат данных Столбецusing with
(X,Y) данные X Y 1:2 lines, points, steps,
linespoints, boxes, etc.
Y с ошибкой dY X Y dY 1:2:3 yerrorbars
X с ошибкой dX X Y dX 1:2:3 xerrorbars
Y с ошибкой dY, и
X с ошибкой dX
X Y dX dY 1:2:3:4 xyerrorbars
Y в интервале [Y1,Y2] X Y Y1 Y2 1:2:3:4 yerrorbars
X в интервале [X1,X2] X Y X1 X2 1:2:3:4 xerrorbars
Y в интервале [Y1,Y2], и
X в интервале [X1,X2]
X Y X1 X2 Y1 Y2 1:2:3:4:5:6 xyerrorbars

3D данные.

Трехмерные данные задаются (X,Y,Z). По умолчанию, они представляют точку в трехмерном пространстве. Когда используется вместе с опцией with lines рисуются линии, gnuplot показывает 3D линии или поверхности в зависимости от формата данных. Следующий пример содержит 4 блока данных, которые разделяются одной пустой строкой. Число пар (X,Y) различно для каждого блока данных. В этом случае, gnuplot не отобразит поверхности, но покажет 3D линии.

# X   Y    Z
  0   0    0
  0   1    1
  0   2    4
  0   3    9
  0   4   16
  0   5   25

  1   0    1
  1   1    2
  1   2    5
  1   3   10
  1   4   17

  2   0    4
  2   1    5
  2   2    8
  2   3   13

  3   0    9
  3   1   10
  3   2   13
gnuplot> splot "test3d.dat" using 1:2:3 with lines
fig/sample7.1c

Теперь, если число пар (X,Y) одинаково:

# X   Y    Z
  0   0    0
  0   1    1
  0   2    4
  0   3    9
  0   4   16
  0   5   25

  1   0    1
  1   1    2
  1   2    5
  1   3   10
  1   4   17
  1   5   26

  2   0    4
  2   1    5
  2   2    8
  2   3   13
  2   4   20
  2   5   29

  3   0    9
  3   1   10
  3   2   13
  3   3   18
  3   4   25
  3   5   34
fig/sample7.1d

Поверхность приобретет вид сетки. Хотя значения Y (второго столбца) в каждом блоке этого примера одинаковы, gnuplot так же рисует поверхность в виде сетки и при различных значениях Y (но количество точек одинаково). Такие данные рассматриваются как сетка данных. Когда ваши данные представленны ввиде сетки данных, gnuplot может сделать контрольную карту или скрытую обработку линий. Далее проходит небольшой тест - значения Y в последнем блоке удваиваются (изменен с Y=5 до Y=10).

fig/sample7.1e

Если необходимо не использовать сетку, а именно линии, но при этом блоки содержат одинаковое количество точек, то необходимо отделить в каждом блоке по 2 пустые строки.

# X   Y    Z
  0   0    0
  0   1    1
  0   2    4
  0   3    9
  0   4   16
  0   5   25


  1   0    1
  1   1    2
  1   2    5
  1   3   10
  1   4   17
  1   5   26


  2   0    4
  2   1    5
  2   2    8
  2   3   13
  2   4   20
  2   5   29


  3   0    9
  3   1   10
  3   2   13
  3   3   18
  3   4   25
  3   5   34
fig/sample7.1f

Матрицы.

Формат данных матрица - это альтернативный способ задать 3D данные. Когда значения X и Y (XY сетка) фиксированны, формат матрица является более удобным. В этом формате необходимым являются направления строки X и столбца Y.

    0    1    4    9
    1    2    5   10
    4    5    8   13
    9   10   13   18
   16   17   20   25
   25   26   29   34

Для построения этих данных используется matrix . Если данные представленны форматом матрица, то координаты X и Y - индексы строк и столбцов. В этом случае указывается диапазон X[0:3] и диапазон Y[0:5]. Если вы хотите изменить эти числа, используется команда set {x|y}tics. Следующий пример показывает как изменить диапазон X от [0:2] до [100:300].

gnuplot> set xtics ("100" 0, "200" 1, "300" 2) 
gnuplot> splot "test3d.dat" matrix with lines
fig/sample7.1g
up