gnuplot / datafile (1E)

Plotting Numerical Data in a Data File (No.1)

Probably most of the gnuplot lovers in a scientific field use this
program to draw a graph of some calculated results or experimental
data. They see their results on their monitor, make some corrections,
comparison of the calculated result with the experimental data, and so
on. If it seems fine, the figure is saved in a postscript format
and send it to a printer, otherwise an EPS file is included in a TeX
document…

What is the format which gnuplot can recognize ?

2-dimensional data

In a data file, the data columns are separated by a white-space or tab.
If a line begins with “#”, this line is ignored. Generally gnuplot
can read any data format if one specifies the format. See gnuplot
help “using”.

#  X     Y
1.0   1.2
2.0   1.8
3.0   1.6

For example, if you have two-dimensional data, one line contains a
pair of X and Y values, like the example above. If X or Y values
have uncertainties, you need an extra column to give the errors.
The order of columns is not important because you can specify which
column is used for X or Y data. If the first column is the X data,
and the second is the Y data, use using option as:

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

If using is omitted, the first column is used for the X data,
and the second is for the Y data automatically.

There are two ways to make an error-bar for the Y value. The
first one is that the Y value has uncertainties of plus/minus Z. The
second one is that the Y value has a range [Z1,Z2]. In this case the
lengths of the error bars below and above Y value are different. The
former needs three columns, and the latter needs four columns.

#  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

To plot those data,

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

one needs the using option.

The number of data column required for data plotting depend on a
kind of figure, which is summarized below.

Data Format Column using with
(X,Y) data X Y 1:2 lines, points, steps,
linespoints, boxes, etc.
Y has an error of dY X Y dY 1:2:3 yerrorbars
X has an error of dX X Y dX 1:2:3 xerrorbars
Y has an error of dY, and
X has an error of dX
X Y dX dY 1:2:3:4 xyerrorbars
Y has a range of [Y1,Y2] X Y Y1 Y2 1:2:3:4 yerrorbars
X has a range of [X1,X2] X Y X1 X2 1:2:3:4 xerrorbars
Y has a range of [Y1,Y2], and
X has a range of [X1,X2]
X Y X1 X2 Y1 Y2 1:2:3:4:5:6 xyerrorbars

3-dimensional data

Three dimensional data are specified by (X,Y,Z). In the default, it
represents a point in a 3-dimensional space. When one uses
with lines
option to draw lines, gnuplot shows 3-dim. lines
or surfaces depending on a data format. The following example
contains 4 blocks data, which are separated by one blank line. The
number of (X,Y) pairs are different for the each data block. In
such a case, gnuplot does not draw a surface but 3-dim. lines.

# 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

Now, if the number of (X,Y) pairs is the same:

# 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

The surface grid appears. Although the Y values (second column) in
the each block of this example are the same, gnuplot also draws the
surface grid even if the Y values are different (but the number of
data points are the same.) Such data are treated as the grid
data. When your data are the grid data, gnuplot can draw a contour
map, or hidden line processing can be done. The next is a simple test
— the Y values in the last block are doubled (changed from Y=5 to
Y=10).

fig/sample7.1e

If you want to remove the surface-grid but your blocks contain the
same number of data point, separate the each block by two blank
lines.

# 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

Matrix

The matrix data format is an alternative way to give 3-dim. data.
When X and Y values (XY grid) are fixed, the matrix format is more
convenient. In this format, raw is the direction of X, and column is 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

To plot this data, use matrix . When the data are
represented by the matrix format, the X and Y coordinates are the
index of row and column. In this case the X range is [0:3] and the
Y range is [0:5]. If you want to change those number, use the
set {x|y}tics
command. The next shows how to change the X
range from [0:2] to [100:300].

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