plot and splot are the primary commands of the program. They plot
functions and data in many, many ways. plot is used to plot 2-d
functions and data, while splot plots 3-d surfaces and data.
Syntax:
plot {ranges} {<function> | {"<datafile>" {using ...}}}
{title} {style} {, <function> {title} {style}...}
splot {ranges} {<function> | {"<datafile>" {index i} {using ...}}}
{title} {style} {, <function> {title} {style}...}
where either a <function> or the name of a data file enclosed in quotes is
supplied. A function is a mathematical expression, or a pair (plot) or
triple (splot) of mathematical expressions in the case of parametric
functions. User-defined functions and variables may also be defined here.
plot and splot commands can be as simple as
plot sin(x)
and
splot x * y
or as complex as (!)
plot [t=1:10] [-pi:pi*2] tan(t), "data.1" using 2:3 with lines,
t**2 with points
Discrete data contained in a file can be displayed by specifying the
name of the data file (enclosed in quotes) on the plot or splot
command line. Data files should contain one data point per line.
Lines beginning with # (or ! on VMS) will be treated as comments
and ignored. For plots, each data point represents an (x,y)
pair. For splots, each point is an (x,y,z) triple. For plots with
error bars (see plot errorbars), each data point is either
(x,y,ydelta) or (x,y,ylow,yhigh). In all cases, the numbers on each
line of a data file must be separated by blank space. This blank
space divides each line into columns.
For plots the x value may be omitted, and for splots the x
and y values may be omitted. In either case the omitted values are
assigned the current coordinate number. Coordinate numbers start at 0
and are incremented for each data point read.
To specify other formats, see plot datafile using.
In the plot command, blank lines in the data file cause a break in
the plot. There will be no line drawn between the preceding and
following points if the plot style is lines or linespoints (see
plot style). This does not change the plot style, as would plotting
the data as separate curves.
This example compares the data in the file population.dat to a theoretical curve:
pop(x) = 103*exp((1965-x)/10)
plot [1960:1990] 'population.dat', pop(x)
The file population.dat might contain:
# Gnu population in Antarctica since 1965
1965 103
1970 55
1975 34
1980 24
1985 10
When a data file is plotted, samples and isosamples are ignored.
Curves plotted using the plot command are automatically extended to
hold the entire curve. Similarly grid data plotted using the splot
command is automatically extended, using the assumption that isolines
are separated by blank lines (a line with only a CR/LF in it).
Implicitly, there are two types of 3-d datafiles. If all the isolines are of the same length, the data is assumed to be a grid data, i.e., the data has a grid topology. Cross isolines in the other parametric direction (the ith cross isoline passes through the ith point of all the provided isolines) will also be drawn for grid data. (Note contouring is available for grid data only.) If all the isolines are not of the same length, no cross isolines will be drawn and contouring that data is impossible.
For splot, data files may contain more than one mesh and by default
all meshes are plotted. Meshes are separated from each other, in the
file, by double blank lines. To control and splot a single mesh from
a multi mesh file, use the index modifier. See splot index for more.
For splot if 3-d datafile and using format (see splot datafile using)
specify only z (height field), a non parametric mode must be specified.
If, on the other hand, x, y, and z are all specified, a parametric
mode should be selected (see set parametric) since data is defining a
parametric surface.
A simple example of plotting a 3-d data file is
set parametric
splot 'glass.dat'
or
set noparametric
splot 'datafile.dat'
where the file datafile.dat might contain:
# The valley of the Gnu.
10
10
10
10
5
10
10
1
10
10
0
10
Note datafile.dat defines a 4 by 3 grid ( 4 rows of 3 points each ). Rows are separated by blank lines.
On some computer systems with a popen function (UNIX), the datafile can be piped through a shell command by starting the file name with a '<'. For example:
pop(x) = 103*exp(-x/10)
plot '< awk "{print $1-1965, $2}" population.dat', pop(x)
would plot the same information as the first population example but with years since 1965 as the x axis. If you want to execute this example, you have to delete all comments from the data file above or substitute the following command for the first part of the command above (the part up to the comma):
plot '< awk "$0 !~ /^#/ {print $1-1965, $2}" population.dat'
It is also possible to apply a single function to the "y" value only, e.g.
plot 'population.dat' thru p(x)
For more information about 3-d plotting, see splot.
The format of data within a file can be selected with the using
option. An explicit scanf string can be used, or simpler column
choices can be made.
Syntax:
plot "datafile" { using { <ycol> |
<xcol>:<ycol> |
<xcol>:<ycol>:<ydelta> |
<xcol>:<ycol>:<ylow>:<yhigh> |
<xcol>:<ycol>:<ylow>:<yhigh>:<boxwidth> }
{"<scanf string>"} } ...
and
splot "datafile" { using { <xcol>:<ycol>:<zcol> | <zcol> }
{"<scanf string>"} } ...
<xcol>, <ycol>, and <zcol> explicitly select the columns to plot from
a space or tab separated multicolumn data file. If only <ycol> is
selected for plot, <xcol> defaults to 1. If only <zcol> is selected
for splot, then only that column is read from the file. An <xcol> of
0 forces <ycol> to be plotted versus its coordinate number. <xcol>,
<ycol>, and <zcol> can be entered as constants or expressions.
If errorbars (see also plot errorbars) are used for plots,
ydelta (for example, a +/- error) should be provided as the third
column, or ylow and yhigh as third and fourth columns.
If boxes or boxerrorbars are used for plots, a fifth column to
specify the width of the box may be given. This implies that columns
three and four must also be provided even if they are not used.
If you want to plot boxes from a data file with three columns,
set ylow and yhigh to y using the following command:
plot "datafile" using 1:2:2:2:3 with boxes
Scanf strings override any <xcol>:<ycol>(:<zcol>) choices, except for ordering of input, e.g.,
plot "datafile" using 2:1 "%f%*f%f"
causes the first column to be y and the third column to be x.
If the scanf string is omitted, the default is generated based on the
<xcol>:<ycol>(:<zcol>) choices. If the using option is omitted, "%f%f"
is used for plot ("%f%f%f%f" for errorbars plots) and "%f%f%f" is
used for splot.
Examples:
plot "MyData" using "%*f%f%*20[^\n]%f" with lines
Data are read from the file "MyData" using the format "%*f%f%*20[^\n]%f". The meaning of this format is: "%*f" ignore the first number, "%f" then read in the second and assign to x, "%*20[^\n]" then ignore 20 non-newline characters, "%f" then read in the y value.
n=3;
plot "MyData", "MyData" using n
causes GNUPLOT to plot the second and third columns of MyData versus the first column. The command 'n=4; replot' would then plot the second and fourth columns of MyData versus the first column.
splot "glass.dat" using 1
causes GNUPLOT to plot the first coordinate of the points of glass.dat as the z coordinate while ignoring the other two coordinates.
Note: GNUPLOT first reads a line of the data file into a buffer and then does a
sscanf(input_buffer, scanf_string, &x, &y{, &z});
where 'x', 'y', and 'z' are of type 'float'. Any scanf string that
specifies two (three for splot, three or four for errorbars) float
numbers may be used.
Error bars are supported for 2-d data file plots by reading one or
two additional columns specifying ydelta or ylow and yhigh
respectively. No support exists for x error bars or any error bars
for splots.
In the default situation, GNUPLOT expects to see three or four numbers on each line of the data file, either (x, y, ydelta) or (x, y, ylow, yhigh). The x coordinate must be specified. The order of the numbers must be exactly as given above. Data files in this format can easily be plotted with error bars:
plot "data.dat" with errorbars
The error bar is a vertical line plotted from (x, ylow) to (x,
yhigh). If ydelta is specified instead of ylow and yhigh,
ylow=y-ydelta and yhigh=y+ydelta are derived. If there
are only two numbers on the line, yhigh and ylow are both set to
y. To get lines plotted between the data points, plot the
data file twice, once with errorbars and once with lines.
If y autoscaling is on, the y range will be adjusted to fit the error bars.
The using option may be used to specify how columns of the data file
are to be assigned to x, y, ydelta, ylow, and yhigh. The x column must
be provided and both the x and y columns must appear before the
errorbar columns. If three column numbers are given, they are x, y,
and ydelta. If four columns are given, they are x, y, ylow, and
yhigh.
Examples:
plot "data.dat" using 1:2:3:4 with errorbars
plot "data.dat" using 3:2:6 with errorbars
plot "data.dat" using 3:4:8:7 with errorbars
The first example reads, x, y, ylow, and yhigh, from columns 1, 2, 3, and 4. This is equivalent to the default. The second example reads x from the third column, y from second and ydelta from the sixth column. The third example reads x from the third column, y from the fourth, ylow from the eighth, and yhigh from seventh columns.
See also plot using and plot style.
When in parametric mode (set parametric) mathematical expressions must
be given in pairs for plot and in triplets for splot:
plot sin(t),t**2
or
splot cos(u)*cos(v),cos(u)*sin(v),sin(u)
Data files are plotted as before, except any preceding parametric function must be fully specified before a data file is given as a plot. In other words, the x parametric function (sin(t) above) and the y parametric function (t**2 above) must not be interrupted with any modifiers or data functions; doing so will generate a syntax error stating that the parametric function is not fully specified.
Ranges take on a different meaning when in parametric mode. The first
range on the plot command is the trange, the next is the xrange,
and the last is the yrange. For splot the order is urange,
vrange, xrange, yrange, and finally zrange. The following
plot command shows setting the trange to [-pi:pi], the xrange to
[-1.3:1.3] and the yrange to [-1:1] for the duration of the plot:
plot [-pi:pi] [-1.3:1.3] [-1:1] sin(t),t**2
Other modifiers, such as with and title, may be specified only
after the parametric function has been completed:
plot sin(t),t**2 title 'Parametric example' with linespoints
The optional range specifies the region of the plot that will be displayed.
Ranges may be provided on the plot and splot command line and
affect only that plot, or in the set xrange, set yrange, etc.,
commands, to change the default ranges for future plots.
Syntax:
[{<dummy-var> =} {<xmin> : <xmax>}] { [{<ymin> : <ymax>}] }
where <dummy-var> is the independent variable (the defaults are x and
y, but this may be changed with set dummy) and the min and max
terms can be constant expressions.
Both the min and max terms are optional. The ':' is also optional if neither a min nor a max term is specified. This allows '[ ]' to be used as a null range specification.
Specifying a range in the plot command line turns autoscaling for
that axis off for that plot. Using one of the set range commands
turns autoscaling off for that axis for future plots, unless changed
later. (See set autoscale).
Examples:
This uses the current ranges:
plot cos(x)
This sets the x range only:
plot [-10:30] sin(pi*x)/(pi*x)
This is the same, but uses t as the dummy-variable:
plot [t = -10 :30] sin(pi*t)/(pi*t)
This sets both the x and y ranges:
plot [-pi:pi] [-3:3] tan(x), 1/x
This sets only the y range, and turns off autoscaling on both axes:
plot [ ] [-2:sin(5)*-8] sin(x)**besj0(x)
This sets xmax and ymin only:
plot [:200] [-pi:] exp(sin(x))
This sets the x, y, and z ranges:
splot [0:3] [1:4] [-1:1] x*y
Splotting of multi mesh data files can be controlled via the index modifier. A data file can contain more than one mesh, and in that case all meshes in the file will be splotted by default. Meshes are separated from each other, in the data file, by double blank lines. To splot a single mesh in a multi mesh file use the index modifier which specify which mesh to splot. First mesh is mesh 0.
Example:
splot "data1" index 2 with points
will splot the third mesh in file data1 with points.
Plots may be displayed in one of eight styles: lines, points,
linespoints, impulses, dots, errorbars, steps, boxes, or
boxerrorbars. The lines style connects adjacent points with lines.
The points style displays a small symbol at each point.
The linespoints style does both lines and points.
The impulses style displays a vertical line from the x axis
(or from the grid base for splot) to each point. The dots style
plots a tiny dot at each point; this is useful for
scatter plots with many points.
The errorbars style is only relevant to 2-d data file plotting. It
is treated like points for splots and function plots. For data
plots, errorbars is like points, except that a vertical error
bar is also drawn: for each point (x,y), a line is drawn from
(x,ylow) to (x,yhigh). A tic mark is placed at the ends of the error
bar. The ylow and yhigh values are read from the data file's columns,
as specified with the using option to plot. See plot errorbars for
more information.
The boxes style is only relevant to 2-d plotting. Another style
called boxerrorbars is also available and is only relevant to 2-d
data file plotting. This style is a combination of the boxes and
errorbars styles. The boxes style draws a box centred about
the given x coordinate from the yaxis to the given y coordinate.
The width of the box is obtained in one of three ways. First, if a
data file has a fifth column, this will be used to set the width of
the box. Columns 3 and 4 (for boxerrorbars) are necessary but
ignored in this instance. Secondly, if a width has been set using
the set boxwidth command, this will be used. Otherwise the width
of each box will be calculated automatically so that it touches the
adjacent boxes.
The steps style is only relevant to 2-d plotting. This style
connects consecutive points with two line segments: the first
from (x1,y1) to (x2,y1) and the second from (x2,y1) to (x2,y2).
Default styles are chosen with the set function style and
set data style commands.
By default, each function and data file will use a different line type and point type, up to the maximum number of available types. All terminal drivers support at least six different point types, and re-use them, in order, if more than six are required. The LaTeX driver supplies an additional six point types (all variants of a circle), and thus will only repeat after twelve curves are plotted with points.
If desired, the style and (optionally) the line type and point type used for a curve can be specified.
Syntax:
with <style> {<linetype> {<pointtype>}}
where <style> is either lines, points, linespoints, impulses,
dots, steps, or errorbars. The <linetype> and <pointtype> are
positive integer constants or expressions and specify the line type
and point type to be used for the plot. Line type 1 is the first line
type used by default, line type 2 is the second line type used by
default, etc.
Examples:
This plots sin(x) with impulses:
plot sin(x) with impulses
This plots x*y with points, x**2 + y**2 default:
splot x*y w points, x**2 + y**2
This plots tan(x) with the default function style, "data.1" with lines:
plot [ ] [-2:5] tan(x), "data.1" with l
This plots "leastsq.dat" with impulses:
plot 'leastsq.dat' w i
This plots the data file 'population' with boxes:
plot "population" with boxes
This plots "exper.dat" with errorbars and lines connecting the points:
plot 'exper.dat' w lines, 'exper.dat' w errorbars
Here 'exper.dat' should have three or four data columns.
This plots x**2 + y**2 and x**2 - y**2 with the same line type:
splot x**2 + y**2 with line 1, x**2 - y**2 with line 1
This plots sin(x) and cos(x) with linespoints, using the same line type but different point types:
plot sin(x) with linesp 1 3, cos(x) with linesp 1 4
This plots file "data" with points style 3:
plot "data" with points 1 3
Note that the line style must be specified when specifying the point style, even when it is irrelevant. Here the line style is 1 and the point style is 3, and the line style is irrelevant.
See set style to change the default styles.
A title of each plot appears in the key. By default the title is
the function or file name as it appears on the plot command line.
The title can be changed by using the title option. This option
should precede any with option.
Syntax:
title "<title>"
where <title> is the new title of the plot and must be enclosed in quotes. The quotes will not be shown in the key.
Examples:
This plots y=x with the title 'x':
plot x
This plots the "glass.dat" file with the title 'surface of revolution':
splot "glass.dat" title 'surface of revolution'
This plots x squared with title "x^2" and "data.1" with title 'measured data':
plot x**2 title "x^2", "data.1" t 'measured data'
The title can be omitted from the key with the "notitle" option for plot and splot. This can be useful when some curves are plotted solely for decoration; for example, if one wanted a circular border for a polar plot, he could say:
Example:
set polar
plot my_function(x), 1 notitle
This would generate a key entry for "my_function" but not for "1". See the poldat.dem example.
Go to the first, previous, next, last section, table of contents.