Go to the first, previous, next, last section, table of contents.


plot

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

data-file

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.

using

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.

errorbars

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.

parametric

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

ranges

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

index

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.

style

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.

title

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.