[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. gnuplot


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Copyright

 
    Copyright (C) 1986 - 1993, 1998, 2004, 2007  Thomas Williams, Colin Kelley

Permission to use, copy, and distribute this software and its documentation for any purpose with or without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.

Permission to modify the software is granted, but not the right to distribute the complete modified source code. Modifications are to be distributed as patches to the released version. Permission to distribute binaries produced by compiling modified sources is granted, provided you

 
  1. distribute the corresponding source modifications from the
   released version in the form of a patch file along with the binaries,
  2. add special version identification to distinguish your version
   in addition to the base release version number,
  3. provide your name and address as the primary contact for the
   support of your modified version, and
  4. retain our contact information in regard to use of the base
   software.

Permission to distribute the released version of the source code along with corresponding source modifications in the form of a patch file is granted with same provisions 2 through 4 for binary distributions.

This software is provided "as is" without express or implied warranty to the extent permitted by applicable law.

 
      AUTHORS

 
      Original Software:
         Thomas Williams,  Colin Kelley.

 
      Gnuplot 2.0 additions:
         Russell Lang, Dave Kotz, John Campbell.

 
      Gnuplot 3.0 additions:
         Gershon Elber and many others.

 
      Gnuplot 4.0 additions:
         See list of contributors at head of this document.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Introduction

`gnuplot` is a command-driven interactive function and data plotting program.

Any command-line arguments are assumed to be names of files containing `gnuplot` commands, with the exception of standard X11 arguments, which are processed first. Each file is loaded with the `load` command, in the order specified. `gnuplot` exits after the last file is processed. The special filename "-" is used to denote standard input. When no load files are named, `gnuplot` enters into an interactive mode. See help for `batch/interactive` for more details.

`gnuplot` is case sensitive (commands and function names written in lowercase are not the same as those written in CAPS). All command names may be abbreviated as long as the abbreviation is not ambiguous. Any number of commands may appear on a line (with the exception that `load` or call must be the final command), separated by semicolons (;). Strings are indicated with quotes. They may be either single or double quotation marks, e.g.,

 
      load "filename"
      cd 'dir'

although there are some subtle differences (see `syntax` for more details).

Many `gnuplot` commands have multiple options. Version 4 is less sensitive to the order of these options than earlier versions, but some order-dependence remains. If you see error messages about unrecognized options, please try again using the exact order listed in the documentation.

Commands may extend over several input lines by ending each line but the last with a backslash (\). The backslash must be the _last_ character on each line. The effect is as if the backslash and newline were not there. That is, no white space is implied, nor is a comment terminated. Therefore, commenting out a continued line comments out the entire command (see `comments`). But note that if an error occurs somewhere on a multi-line command, the parser may not be able to locate precisely where the error is and in that case will not necessarily point to the correct line.

In this document, curly braces ({}) denote optional arguments and a vertical bar (|) separates mutually exclusive choices. `gnuplot` keywords or help topics are indicated by backquotes or `boldface` (where available). Angle brackets (<>) are used to mark replaceable tokens. In many cases, a default value of the token will be taken for optional arguments if the token is omitted, but these cases are not always denoted with braces around the angle brackets.

For on-line help on any topic, type help followed by the name of the topic or just help or `?` to get a menu of available topics.

The new `gnuplot` user should begin by reading about `plotting` (if on-line, type `help plotting`).

See the simple.dem demo, also available together with other demos on the web page http://www.gnuplot.info/demo/simple.html


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 Seeking-assistance

There is a mailing list for `gnuplot` users. Note, however, that the newsgroup

 
      comp.graphics.apps.gnuplot

is identical to the mailing list (they both carry the same set of messages). We prefer that you read the messages through the newsgroup rather than subscribing to the mailing list. Instructions for subscribing to gnuplot mailing lists may be found via the gnuplot development website on SourceForge http://sourceforge.net/projects/gnuplot

The address for mailing to list members is:

 
      gnuplot-info@lists.sourceforge.net

Bug reports and code contributions should be mailed to:

 
      gnuplot-bugs@lists.sourceforge.net

The list of those interested in beta-test versions is:

 
      gnuplot-beta@lists.sourceforge.net

There is also the canonical (if occasionally out-of-date) gnuplot web page at

http://www.gnuplot.info

Before seeking help, please check the

FAQ (Frequently Asked Questions) list.

When posting a question, please include full details of the version of `gnuplot`, the machine, and operating system you are using. A _small_ script demonstrating the problem may be useful. Function plots are preferable to datafile plots. If email-ing to gnuplot-info, please state whether or not you are subscribed to the list, so that users who use news will know to email a reply to you. There is a form for such postings on the WWW site.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 New features introduced in version 4.2

Gnuplot version 4.2 offers many new features introduced since the preceding official version 4.0. This section lists major additions and gives a partial list of changes and minor new features. For a more exhaustive list, see the NEWS file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1 New plot styles


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1.1 Histogram

Histograms, or bar charts, can be produced. See `histograms`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1.2 Label plots

In coordination with the new `datastrings` feature described below, gnuplot can draw a label at each vertex of a curve. See `labels`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1.3 Image data

The `image` and `rgbimage` styles allow to plot 2D images (from ascii or `binary` files) and map them in a 2D or 3D plot. See `image` and `rgbimage`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1.4 Filled curves

The plot style `fillstyle` has been augmented to allow to fill the area between two input curves with a color or a pattern. See `filledcurves`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.1.5 Vectors

Gnuplot can draw plots with vectors with a small arrowhead, requiring four or six columns of data for 2D or 3D, respectively. See `vectors`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.2 Input from binary data files

Gnuplot can now read a generic `binary` input, including matrix binary and `general binary` (until now gnuplot supported only its own `binary matrix` format). Several matrix file formats are autodetected (`gpbin`, `edf`, `avs`). Binary data files are mainly useful for `image` and `rgbimage` drawings. See `binary` and `binary general filetype`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.3 New plot elements


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.3.1 RGB colors

Explicit RGB colors can be specified for all plot elements instead of specifying a predefined linetype. See colorspec.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.3.2 Arbitrary rectangles

You can place rectangles with desired fill style and border anywhere in a 2D plot. See `set object rectangle`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.4 String handling


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.4.1 String and text data read from datafiles

Gnuplot can now read and process text fields in datafiles. See `datastrings`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.4.2 User-defined string variables, operators, and functions

String variables and string functions are introduced. Most gnuplot commands that previously required a string constant will now also accept a string variable, a string expression, or a function that returns a string. See variables.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.5 Macros

Gnuplot supports command line macro expansion by '@stringvariablename'. See macros.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.6 Auto-layout of multiple plots on a page

The multiplot mode is now able to layout automatically simple multiplots without having to set the size or the position for each plot. See multiplot.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.7 Internal variables

Gnuplot now exports several "read-only" variables such as GPVAL_TERM, GPVAL_X_MIN, etc. See variables.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8 New or revised terminal drivers


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.1 `wxt`

The `wxt` terminal is an interactive and cross-platform terminal for on-screen rendering. It uses the wxWidgets library for its user interface, and Cairo associated with Pango for the actual rendering, providing nice plots with antialiasing on lines and text. The terminal supports the full range of gnuplot capabilities, including mousing, pm3d plots, image plots and enhanced text.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.2 `emf`

The `emf` terminal generates an Enhanced Metafile Format file. This file format is the metafile standard on MS Win32 Systems. The emf terminal supports pm3d, rgb color, and image plot modes.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.3 `gif`, `jpeg`, `png`

The code for the terminals using the `gd` library has been consolidated. The `gif` terminal also knows how to produce an animated gif from a sequence of plots.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.4 postscript

The postscript terminal can load prologue files, which can contain additional user-defined sections with, for example, character encodings. See `postscript prologue`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.5 `ai`

The Adobe Illustrator `ai` driver is outdated. Since Adobe Illustrator understands PostScript files, `set terminal post level1 ...` should be used instead.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.6 `epslatex`, `pslatex`, `pstex`

The terminals supporting an output to latex augmented by PostScript commands have been consolidated. Many options are the same as in the postscript terminal.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.8.7 `windows`

The `windows` terminal now supports the `enhanced text` mode.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4.9 Canvas size

In earlier versions of gnuplot, some terminal types used the values from size to control also the size of the output canvas; others did not. The use of 'set size' for this purpose was deprecated in version 4.2. In version 4.3 almost all terminals now behave as follows:

`set term <terminal_type> size <XX>, <YY>` controls the size of the output file, or "canvas". Please see individual terminal documentation for allowed values of the size parameters. By default, the plot will fill this canvas.

`set size <XX>, <YY>` scales the plot itself relative to the size of the canvas. Scale values less than 1 will cause the plot to not fill the entire canvas. Scale values larger than 1 will cause only a portion of the plot to fit on the canvas. Please be aware that setting scale values larger than 1 may cause problems on some terminal types.

The major exception to this convention is the PostScript driver, which by default continues to act as it has in earlier versions. Be warned that the next version of gnuplot may change the default behaviour of the PostScript driver as well.

Example:

 
      set size 0.5, 0.5
      set term png size 600, 400
      set output "figure.png"
      plot "data" using lines

These commands will produce an output file "figure.png" that is 600 pixels wide and 400 pixels tall. The plot will fill the lower left quarter of this canvas. This is consistent with the way multiplot mode has always worked, however it is a change in the way the png driver worked for single plots in version 4.0.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 Backwards compatibility

Gnuplot version 4.0 deprecated certain syntax used in earlier versions, but continued to recognize it. This is now under the control of a configuration option, and can be disabled as follows:

 
      ./configure --disable-backwards-compatibility

Notice: Deprecated syntax items may be disabled permanently in some future version of gnuplot.

One major difference is the introduction of keywords to disambiguate complex commands, particularly commands containing string variables. A notable issue was the use of bare numbers to specify offsets, line and point types. Illustrative examples:

Deprecated:

 
      set title "Old" 0,-1
      set data linespoints
      plot 1 2 4               # horizontal line at y=1

New:

 
      TITLE = "New"
      set title TITLE offset char 0, char -1
      set style data linespoints
      plot 1 linetype 2 pointtype 4

Another compatibility issue is the effect of the command size outside when not in multiplot mode. In earlier versions, the command `set size <xx>, <yy>` caused some terminals to change both the size of the plot and the size of the canvas is was drawn on; other terminatls changed only the plot size. The use of size to change the canvas size is now deprecated.

Please see size, size and also the documentation for individual terminals.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6 Features introduced in version 4.0

Gnuplot version 4.0 contained many features introduced since the preceding official version 3.7. These are summarized here.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.1 Mouse and hotkey support in interactive terminals

Interaction with the current plot via mouse and hotkeys is supported for the X11, OS/2 Presentation Manager, ggi, Windows, and wxWidgets terminals. See `mouse input` for more information on mousing. See help for bind for information on hotkeys. Also see the documentation for individual mousing terminals `ggi`, `pm`, `windows`, `wxt` and `x11`.

Sample script: mousevariables.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.2 New terminals

`aqua`: New terminal for Mac OS X. Requires AquaTerm 1.0 or later.

`epslatex`: New terminal. Prepares eps figures for inclusion in LaTeX documents.

`gif`: Consolidated with png/jpeg terminals. Requires libgd.

`ggi`: New full-screen interactive terminal for Linux. Interface to the General Graphics Interface Library.

`pdf`: New terminal exporting Adobe Portable Document Format. Requires libpdf.

`png` and `jpeg`: Support for GIF, PNG and JPEG image output is provided by a new driver via libgd. The new driver supports many more features than the old png driver, including TrueType fonts. Requires libgd.

`svg`: New terminal exporting Scalable Vector Graphics.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.3 New plot style

The `splot` command is now capable of plotting 2D maps and 3D surfaces colored by greyscale or color palettes. See help for pm3d, palette, cbrange, `set view map`, `set colorbox` and palette.

Sample scripts: pm3d.dem pm3dcolors.dem pm3dgamma.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.4 Filled boxes

A solid color or patterned fill style can be set for any plot style that contains boxes. See `boxes`, `boxerrorbars`, `boxxyerrorbars`, `candlesticks`, `set style fill`.

Sample scripts: fillstyle.dem candlesticks.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.5 New plot option smooth frequency

Input data can be filtered through several built-in routines for interpolation or approximation of data. See smooth, `frequency`, `unique`.

Sample scripts: step.dem mgr.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.6 Improved text options

Most gnuplot plot commands that produce text labels now accept modifiers to specify text color, font, size, and rotation angle. See label. Not all terminal types support these options, however. The enhanced text mode previously available for the postscript and pm terminals has been extended to other terminal types as well. Terminal types currently supported include aqua, dumb, jpeg, pdf, pm, png, postscript, x11, windows, and wxt. See `enhanced text`.

Sample scripts: textcolor.dem textrotate.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.7 More text encodings

Several terminals, including postscript, `x11` and `pm`, support additional text `encodings`: ISO 8859-1 (Latin 1), ISO 8859-2 (Latin 2), ISO 8859-15 (variant of 8859-1 with Euro sign), KOI8-R and KOI8-U (cyrillic), and miscellaneous codepages. See encoding for more details.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.8 Arrows

Single- or double-ended arrows can be placed on a plot individually from the command line or from a data file via the `plot with vectors` style. See arrow, `plotting styles vectors`.

Sample scripts: arrowstyle.dem vector.dem


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.9 Data file format

The new datafile command can be used to specify information about the format of input data files, including the characters used to separate fields, to indicate comment lines, and to specify missing data. Gnuplot now attempts to recognize text fields with embedded blanks as single entities based on the datafile format settings. This allows input from csv (comma-separated value) files such as those exported by spreadsheet programs. See datafile. See also the `binary` option (introduced in 4.2).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.10 New commands

`set view map` selects a top-view 2D projection of 3D surface plot.

`set term push` and `set term pop` save and restore the current terminal type.

`load` and save commands accept piped input and output, respectively.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.11 Other changes and additions

Since gnuplot 4.0, `unset <something>` is preferred to `set no<something>`. The older form has been deprecated. Version 4.2 continues to allow the older syntax, but such backwards compatibility may be lost in future versions.

Commands of the form `set <something> <style>` also are deprecated in favor of the more general form `set style <something> <options>`. Many more plot elements now have style options of their own, including arrows, filled areas, lines, and points. There are also style settings for input data and formatting. Please see style, decimalsign, and datafile.

The MS Windows package includes an additional executable `pgnuplot.exe` to support piping command through standard input, which is otherwise not available for graphical applications on this system.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6.12 Accompanying documentation

In directory docs/psdocs/ you may find new information in the gnuplot output postscript file guide, list of postscript symbols in different encodings.

Improved FAQ. Please read it before asking your question in a public forum.

There are plenty of new demos *.dem in the demo/ directory. Please run them, for example by

 
      load "all.dem"

before asking for help. Plots produced by the demo scripts can also be viewed at http://www.gnuplot.info/demo/


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.7 Batch/Interactive Operation

`gnuplot` may be executed in either batch or interactive modes, and the two may even be mixed together on many systems.

Any command-line arguments are assumed to be names of files containing `gnuplot` commands (with the exception of standard X11 arguments, which are processed first). Each file is loaded with the `load` command, in the order specified. `gnuplot` exits after the last file is processed. When no load files are named, `gnuplot` enters into an interactive mode. The special filename "-" is used to denote standard input.

Both the exit and quit commands terminate the current command file and `load` the next one, until all have been processed.

Examples:

To launch an interactive session:

 
      gnuplot

To launch a batch session using two command files "input1" and "input2":

 
      gnuplot input1 input2

To launch an interactive session after an initialization file "header" and followed by another command file "trailer":

 
      gnuplot header - trailer


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.8 Command-line-editing

Command-line editing is supported by the Unix, Atari, VMS, MS-DOS and OS/2 versions of `gnuplot`. Also, a history mechanism allows previous commands to be edited and re-executed. After the command line has been edited, a newline or carriage return will enter the entire line without regard to where the cursor is positioned.

(The readline function in `gnuplot` is not the same as the readline used in GNU Bash and GNU Emacs. If the GNU version is desired, it may be selected instead of the `gnuplot` version at compile time.)

The editing commands are as follows:

 
      `Line-editing`:

 
      ^B    moves back a single character.
      ^F    moves forward a single character.
      ^A    moves to the beginning of the line.
      ^E    moves to the end of the line.
      ^H    and DEL delete the previous character.
      ^D    deletes the current character.
      ^K    deletes from current position to the end of line.
      ^L,^R redraws line in case it gets trashed.
      ^U    deletes the entire line.
      ^W    deletes from the current word to the end of line.

 
      `History`:

 
      ^P    moves back through history.
      ^N    moves forward through history.

On the IBM PC, the use of a TSR program such as DOSEDIT or CED may be desired for line editing. The default makefile assumes that this is the case; by default `gnuplot` will be compiled with no line-editing capability. If you want to use `gnuplot`'s line editing, set READLINE in the makefile and add readline.obj to the link file. The following arrow keys may be used on the IBM PC and Atari versions if readline is used:

 
      Left  Arrow      - same as ^B.
      Right Arrow      - same as ^F.
      Ctrl Left  Arrow - same as ^A.
      Ctrl Right Arrow - same as ^E.
      Up    Arrow      - same as ^P.
      Down  Arrow      - same as ^N.

The Atari version of readline defines some additional key aliases:

 
      Undo            - same as ^L.
      Home            - same as ^A.
      Ctrl Home       - same as ^E.
      Esc             - same as ^U.
      Help            - help plus return.
      Ctrl Help       - help.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.9 Comments

Comments are supported as follows: a `#` may appear in most places in a line and `gnuplot` will ignore the rest of the line. It will not have this effect inside quotes, inside numbers (including complex numbers), inside command substitutions, etc. In short, it works anywhere it makes sense to work.

See also `set datafile commentschars` for specifying comment characters in data files.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.10 Coordinates

The commands arrow, key, label and object allow you to draw something at an arbitrary position on the graph. This position is specified by the syntax:

 
      {<system>} <x>, {<system>} <y> {,{<system>} <z>}

Each <system> can either be `first`, `second`, `graph`, `screen`, or `character`.

`first` places the x, y, or z coordinate in the system defined by the left and bottom axes; `second` places it in the system defined by the second axes (top and right); `graph` specifies the area within the axes--0,0 is bottom left and 1,1 is top right (for splot, 0,0,0 is bottom left of plotting area; use negative z to get to the base--see ticslevel); `screen` specifies the screen area (the entire area--not just the portion selected by size), with 0,0 at bottom left and 1,1 at top right; and `character` gives the position in character widths and heights from the bottom left of the screen area (screen 0,0), `character` coordinates depend on the chosen font size.

If the coordinate system for x is not specified, `first` is used. If the system for y is not specified, the one used for x is adopted.

In some cases, the given coordinate is not an absolute position but a relative value (e.g., the second position in arrow ... `rto`). In most cases, the given value serves as difference to the first position. If the given coordinate resides in a logarithmic axis the value is interpreted as factor. For example,

 
      set logscale x
      set arrow 100,5 rto 10,2

plots an arrow from position 100,5 to position 1000,7 since the x axis is logarithmic while the y axis is linear.

If one (or more) axis is timeseries, the appropriate coordinate should be given as a quoted time string according to the timefmt format string. See xdata and timefmt. `gnuplot` will also accept an integer expression, which will be interpreted as seconds from 1 January 2000.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.11 Datastrings

The configuration option -enable-datastrings allows gnuplot to read and process text fields in datafiles. A text field consists of either an arbitrary string of printable characters containing no whitespace or an arbitrary string of characters, possibly including whitespace, delimited by double quotes. The following sample line from a datafile is interpreted to contain four columns, with a text field in column 3:

 
  1.000 2.000 "Third column is all of this text" 4.00

Text fields can be positioned within a 2-D or 3-D plot using the commands:

 
  plot 'datafile' using 1:2:4 with labels
  splot 'datafile using 1:2:3:4 with labels

A column of text data can also be used to label the ticmarks along one or more of the plot axes. The example below plots a line through a series of points with (X,Y) coordinates taken from columns 3 and 4 of the input datafile. However, rather than generating regularly spaced tics along the x axis labeled numerically, gnuplot will position a tic mark along the x axis at the X coordinate of each point and label the tic mark with text taken from column 1 of the input datafile.

 
  set xtics
  plot 'datafile' using 3:4:xticlabels(1) with linespoints

There is also an option that will interpret the first entry in a column of input data as a text field, and use it as the key title for data plotted from that column. The example given below will use the first entry in column 2 to generate a title in the key box, while processing the remainder of columns 2 and 4 to draw the required line:

 
  plot 'datafile' using 1:(f($2)/$4) title 2 with lines

See `set style labels`, `using xticlabels`, `plot title`, using.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.12 Environment

A number of shell environment variables are understood by `gnuplot`. None of these are required, but may be useful.

If GNUTERM is defined, it is used as the name of the terminal type to be used. This overrides any terminal type sensed by `gnuplot` on start-up, but is itself overridden by the .gnuplot (or equivalent) start-up file (see `start-up`) and, of course, by later explicit changes.

On Unix, AmigaOS, AtariTOS, MS-DOS and OS/2, GNUHELP may be defined to be the pathname of the HELP file (gnuplot.gih).

On VMS, the logical name GNUPLOT$HELP should be defined as the name of the help library for `gnuplot`. The `gnuplot` help can be put inside any system help library, allowing access to help from both within and outside `gnuplot` if desired.

On Unix, HOME is used as the name of a directory to search for a .gnuplot file if none is found in the current directory. On AmigaOS, AtariTOS, MS-DOS, Windows and OS/2, GNUPLOT is used. On Windows, the NT-specific variable USERPROFILE is tried, too. VMS, SYS$LOGIN: is used. Type `help start-up`.

On Unix, PAGER is used as an output filter for help messages.

On Unix, AtariTOS and AmigaOS, SHELL is used for the shell command. On MS-DOS and OS/2, COMSPEC is used for the shell command.

On MS-DOS, if the BGI or Watcom interface is used, PCTRM is used to tell the maximum resolution supported by your monitor by setting it to S<max. horizontal resolution>. E.g. if your monitor's maximum resolution is 800x600, then use:

 
      set PCTRM=S800

If PCTRM is not set, standard VGA is used.

FIT_SCRIPT may be used to specify a `gnuplot` command to be executed when a fit is interrupted--see `fit`. FIT_LOG specifies the default filename of the logfile maintained by fit.

GNUPLOT_LIB may be used to define additional search directories for data and command files. The variable may contain a single directory name, or a list of directories separated by a platform-specific path separator, eg. ':' on Unix, or ';' on DOS/Windows/OS/2/Amiga platforms. The contents of GNUPLOT_LIB are appended to the loadpath variable, but not saved with the save and `save set` commands.

Several gnuplot terminal drivers access TrueType fonts via the gd library. For these drivers the font search path is controlled by the environmental variable GDFONTPATH. Furthermore, a default font for these drivers may be set via the environmental variable GNUPLOT_DEFAULT_GDFONT.

The postscript terminal uses its own font search path. It is controlled by the environmental variable GNUPLOT_FONTPATH. The format is the same as for GNUPLOT_LIB. The contents of GNUPLOT_FONTPATH are appended to the fontpath variable, but not saved with the save and `save set` commands.

GNUPLOT_PS_DIR is used by the postscript driver to use external prologue files. Depending on the build process, gnuplot contains either a builtin copy of those files or simply a default hardcoded path. Use this variable to test the postscript terminal with custom prologue files. See `postscript prologue`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13 Expressions

In general, any mathematical expression accepted by C, FORTRAN, Pascal, or BASIC is valid. The precedence of these operators is determined by the specifications of the C programming language. White space (spaces and tabs) is ignored inside expressions.

Complex constants are expressed as {<real>,<imag>}, where <real> and <imag> must be numerical constants. For example, {3,2} represents 3 + 2i; {0,1} represents 'i' itself. The curly braces are explicitly required here.

Note that gnuplot uses both "real" and "integer" arithmetic, like FORTRAN and C. Integers are entered as "1", "-10", etc; reals as "1.0", "-10.0", "1e1", 3.5e-1, etc. The most important difference between the two forms is in division: division of integers truncates: 5/2 = 2; division of reals does not: 5.0/2.0 = 2.5. In mixed expressions, integers are "promoted" to reals before evaluation: 5/2e0 = 2.5. The result of division of a negative integer by a positive one may vary among compilers. Try a test like "print -5/2" to determine if your system chooses -2 or -3 as the answer.

The integer expression "1/0" may be used to generate an "undefined" flag, which causes a point to ignored; the `ternary` operator gives an example.

The real and imaginary parts of complex expressions are always real, whatever the form in which they are entered: in {3,2} the "3" and "2" are reals, not integers.

Gnuplot can also perform simple operations on strings and string variables. For example, the expression ("A" . "B" eq "AB") evaluates as true, illustrating the string concatenation operator and the string equality operator.

A string which contains a numerical value is promoted to the corresponding integer or real value if used in a numerical expression. Thus ("3" + "4" == 7) and (6.78 == "6.78") both evaluate to true. An integer, but not a real or complex value, is promoted to a string if used in string concatenation. A typical case is the use of integers to construct file names or other strings; e.g. ("file" . 4 eq "file4") is true.

Substrings can be specified using a postfixed range descriptor [beg:end]. For example, "ABCDEF"[3:4] == "CD" and "ABCDEF"[4:*] == "DEF" The syntax "string"[beg:end] is exactly equivalent to calling the built-in string-valued function substr("string",beg,end), except that you cannot omit either beg or end from the function call.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1 Functions

The functions in `gnuplot` are the same as the corresponding functions in the Unix math library, except that all functions accept integer, real, and complex arguments, unless otherwise noted.

For those functions that accept or return angles that may be given in either degrees or radians (sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(x) and arg(z)), the unit may be selected by angles, which defaults to radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.1 abs

The `abs(x)` function returns the absolute value of its argument. The returned value is of the same type as the argument.

For complex arguments, abs(x) is defined as the length of x in the complex plane [i.e., sqrt(real(x)**2 + imag(x)**2) ].


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.2 acos

The `acos(x)` function returns the arc cosine (inverse cosine) of its argument. `acos` returns its argument in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.3 acosh

The `acosh(x)` function returns the inverse hyperbolic cosine of its argument in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.4 arg

The `arg(x)` function returns the phase of a complex number in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.5 asin

The `asin(x)` function returns the arc sin (inverse sin) of its argument. `asin` returns its argument in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.6 asinh

The `asinh(x)` function returns the inverse hyperbolic sin of its argument in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.7 atan

The `atan(x)` function returns the arc tangent (inverse tangent) of its argument. `atan` returns its argument in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.8 atan2

The `atan2(y,x)` function returns the arc tangent (inverse tangent) of the ratio of the real parts of its arguments. atan2 returns its argument in radians or degrees, as selected by angles, in the correct quadrant.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.9 atanh

The `atanh(x)` function returns the inverse hyperbolic tangent of its argument in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.10 besj0

The `besj0(x)` function returns the j0th Bessel function of its argument. besj0 expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.11 besj1

The `besj1(x)` function returns the j1st Bessel function of its argument. besj1 expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.12 besy0

The `besy0(x)` function returns the y0th Bessel function of its argument. besy0 expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.13 besy1

The `besy1(x)` function returns the y1st Bessel function of its argument. besy1 expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.14 ceil

The `ceil(x)` function returns the smallest integer that is not less than its argument. For complex numbers, ceil returns the smallest integer not less than the real part of its argument.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.15 cos

The `cos(x)` function returns the cosine of its argument. `cos` accepts its argument in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.16 cosh

The `cosh(x)` function returns the hyperbolic cosine of its argument. cosh expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.17 erf

The `erf(x)` function returns the error function of the real part of its argument. If the argument is a complex value, the imaginary component is ignored. See erfc, inverf, and norm.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.18 erfc

The `erfc(x)` function returns 1.0 - the error function of the real part of its argument. If the argument is a complex value, the imaginary component is ignored. See `erf`, inverf, and norm.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.19 exp

The `exp(x)` function returns the exponential function of its argument (`e` raised to the power of its argument). On some implementations (notably suns), exp(-x) returns undefined for very large x. A user-defined function like safe(x) = x<-100 ? 0 : exp(x) might prove useful in these cases.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.20 floor

The `floor(x)` function returns the largest integer not greater than its argument. For complex numbers, floor returns the largest integer not greater than the real part of its argument.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.21 gamma

The `gamma(x)` function returns the gamma function of the real part of its argument. For integer n, gamma(n+1) = n!. If the argument is a complex value, the imaginary component is ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.22 ibeta

The `ibeta(p,q,x)` function returns the incomplete beta function of the real parts of its arguments. p, q > 0 and x in [0:1]. If the arguments are complex, the imaginary components are ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.23 inverf

The `inverf(x)` function returns the inverse error function of the real part of its argument. See `erf` and invnorm.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.24 igamma

The `igamma(a,x)` function returns the normalized incomplete gamma function of the real parts of its arguments, where a > 0 and x >= 0. The standard notation is P(a,x), e.g. Abramowitz and Stegun (6.5.1), with limiting value of 1 as x approaches infinity. If the arguments are complex, the imaginary components are ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.25 imag

The `imag(x)` function returns the imaginary part of its argument as a real number.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.26 invnorm

The `invnorm(x)` function returns the inverse cumulative normal (Gaussian) distribution function of the real part of its argument. See norm.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.27 int

The `int(x)` function returns the integer part of its argument, truncated toward zero.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.28 lambertw

The lambertw function returns the value of the principal branch of Lambert's W function, which is defined by the equation (W(z)*exp(W(z))=z. z must be a real number with z >= -exp(-1).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.29 lgamma

The `lgamma(x)` function returns the natural logarithm of the gamma function of the real part of its argument. If the argument is a complex value, the imaginary component is ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.30 log

The `log(x)` function returns the natural logarithm (base `e`) of its argument. See log10.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.31 log10

The `log10(x)` function returns the logarithm (base 10) of its argument.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.32 norm

The `norm(x)` function returns the cumulative normal (Gaussian) distribution function of the real part of its argument. See invnorm, `erf` and erfc.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.33 rand

`rand(0)` returns a pseudo random number in the interval [0:1] generated

 
           from the current value of two internal 32-bit seeds.

`rand(-1)` resets both seeds to a standard value. `rand(x)` for x>0 sets both seeds to a value based on the value of x. `rand({x,y})` for x>0 sets seed1 to x and seed2 to y. Note: This behavior has changed starting with gnuplot version 3.8l. Older scripts that expected rand(x>0) to produce sequential pseudo-random numbers from the same seeded sequence must be changed to call rand(0) instead.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.34 real

The `real(x)` function returns the real part of its argument.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.35 sgn

The `sgn(x)` function returns 1 if its argument is positive, -1 if its argument is negative, and 0 if its argument is 0. If the argument is a complex value, the imaginary component is ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.36 sin

The `sin(x)` function returns the sine of its argument. `sin` expects its argument to be in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.37 sinh

The `sinh(x)` function returns the hyperbolic sine of its argument. sinh expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.38 sqrt

The `sqrt(x)` function returns the square root of its argument.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.39 tan

The `tan(x)` function returns the tangent of its argument. `tan` expects its argument to be in radians or degrees, as selected by angles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.40 tanh

The `tanh(x)` function returns the hyperbolic tangent of its argument. tanh expects its argument to be in radians.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.41 gprintf

`gprintf("format",x)` applies gnuplot's own format specifiers to the single variable x and returns the resulting string. If you want standard C-language format specifiers, you must instead use `sprintf("format",x)`. See `format specifiers`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.42 sprintf

`sprintf("format",var1,var2,...)` applies standard C-language format specifiers to multiple arguments (10 max) and returns the resulting string. If you want to use gnuplot's own format specifiers, you must instead call `gprintf()`. For information on sprintf format specifiers, please see standard C-language documentation or the unix sprintf man page.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.43 strlen

`strlen("string")` returns the number of characters in the string.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.44 strstrt

`strstrt("string","key")` searches for the character string "key" in "string" and returns the index to the first character of "key". If "key" is not found, returns 0. Similar to C library function strstr except that it returns an index rather than a string pointer. strstrt("hayneedlestack","needle") = 4.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.45 substr

`substr("string",beg,end)` returns the substring consisting of characters beg through end of the original string. This is exactly equivalent to the expression "string"[beg:end] except that you do not have the option of ommitting beg or end.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.46 system

`system("command")` executes "command" using the standard shell and returns the resulting character stream from stdout as string variable. One optional trailing newline is ignored.

This can be used to import external functions into gnuplot scripts using 'f(x) = real(system(sprintf("somecommand %f", x)))'.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.47 word

`word("string",n)` returns the nth word in string. For example, `word("one two three",2)` returns the string "two".


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.48 words

`words("string")` returns the number of words in string. For example, `words(" a b c d")` returns the 4.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.49 column

`column(x)` may be used only in expressions as part of using manipulations to fits or datafile plots. It evaluates to the numerical value of the contents of column x. See using.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.50 defined

`defined(X)` [DEPRECATED] returns 1 if a variable named X has been defined, otherwise it returns 0.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.51 exists

The argument to exists() is a string constant or a string variable; if the string contains the name of a defined variable, the function returns 1. Otherwise the function returns 0.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.52 stringcolumn

`stringcolumn(x)` may be used only in expressions as part of using manipulations to fits or datafile plots. It returns the content of column x as a string variable. See using.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.53 timecolumn

`timecolumn(x)` may be used only in expressions as part of using manipulations to fits or datafile plots. See using.

It reads the data starting at that column as a time/date value and returns its value in gnuplot's internal time representation of "seconds since the millennium".

To find the right timefmt string to use, timecolumn searches for a using specification with the same column number as its argument. If one is found, timefmt pattern of the target axis for this specifier is used. Otherwise, timecolumn chooses the x axis timefmt per default.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.54 tm_hour

The tm_hour function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the hour (an integer in the range 0-23) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.55 tm_mday

The tm_mday function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the day of the month (an integer in the range 1-31) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.56 tm_min

The tm_min function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the minute (an integer in the range 0-59) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.57 tm_mon

The tm_mon function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the month (an integer in the range 0-11) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.58 tm_sec

The tm_sec function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the second (an integer in the range 0-59) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.59 tm_wday

The tm_wday function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the day of the week (an integer in the range 0-6) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.60 tm_yday

The tm_yday function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the day of the year (an integer in the range 1-366) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.61 tm_year

The tm_year function interprets its argument as a time, in seconds from 1 Jan 2000. It returns the year (an integer) as a real.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.62 valid

`valid(x)` may be used only in expressions as part of using manipulations to fits or datafile plots. See using.

See also airfoil.dem: use of functions and complex variables for airfoils demo.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.1.63 Random number generator

The behavior of the built-in function `rand(x)` has changed as of version 3.8l. Older scripts that expected rand(x>0) to produce sequential pseudo-random numbers from the same seeded sequence must be changed to call rand(0) instead. The current behavior is as follows:

 
 `rand(0)`  returns a pseudo random number in the interval [0:1] generated
            from the current value of two internal 32-bit seeds.
 `rand(-1)` resets both seeds to a standard value.
 `rand(x)`  for x>0 sets both seeds to a value based on the value of x.
 `rand({x,y})` for x>0 sets seed1 to x and seed2 to y.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.2 Operators

The operators in `gnuplot` are the same as the corresponding operators in the C programming language, except that all operators accept integer, real, and complex arguments, unless otherwise noted. The ** operator (exponentiation) is supported, as in FORTRAN.

Parentheses may be used to change order of evaluation.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.2.1 Unary

The following is a list of all the unary operators and their usages:

 
    Symbol      Example    Explanation
      -           -a          unary minus
      +           +a          unary plus (no-operation)
      ~           ~a        * one's complement
      !           !a        * logical negation
      !           a!        * factorial
      $           $3        * call arg/column during using manipulation

(*) Starred explanations indicate that the operator requires an integer argument.

Operator precedence is the same as in Fortran and C. As in those languages, parentheses may be used to change the order of operation. Thus -2**2 = -4, but (-2)**2 = 4.

The factorial operator returns a real number to allow a greater range.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.2.2 Binary

The following is a list of all the binary operators and their usages:

 
    Symbol       Example      Explanation
      **          a**b          exponentiation
      *           a*b           multiplication
      /           a/b           division
      %           a%b         * modulo
      +           a+b           addition
      -           a-b           subtraction
      ==          a==b          equality
      !=          a!=b          inequality
      <           a<b           less than
      <=          a<=b          less than or equal to
      >           a>b           greater than
      >=          a>=b          greater than or equal to
      &           a&b         * bitwise AND
      ^           a^b         * bitwise exclusive OR
      |           a|b         * bitwise inclusive OR
      &&          a&&b        * logical AND
      ||          a||b        * logical OR
      .           A.B           string concatenation
      eq          A eq B        string equality
      ne          A ne B        string inequality

(*) Starred explanations indicate that the operator requires integer arguments. Capital letters A and B indicate that the operator requires string arguments.

Logical AND (&&) and OR (||) short-circuit the way they do in C. That is, the second `&&` operand is not evaluated if the first is false; the second `||` operand is not evaluated if the first is true.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.2.3 Ternary

There is a single ternary operator:

 
    Symbol       Example      Explanation
      ?:          a?b:c     ternary operation

The ternary operator behaves as it does in C. The first argument (a), which must be an integer, is evaluated. If it is true (non-zero), the second argument (b) is evaluated and returned; otherwise the third argument (c) is evaluated and returned.

The ternary operator is very useful both in constructing piecewise functions and in plotting points only when certain conditions are met.

Examples:

Plot a function that is to equal sin(x) for 0 <= x < 1, 1/x for 1 <= x < 2, and undefined elsewhere:

 
      f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0
      plot f(x)

Note that `gnuplot` quietly ignores undefined values, so the final branch of the function (1/0) will produce no plottable points. Note also that f(x) will be plotted as a continuous function across the discontinuity if a line style is used. To plot it discontinuously, create separate functions for the two pieces. (Parametric functions are also useful for this purpose.)

For data in a file, plot the average of the data in columns 2 and 3 against the datum in column 1, but only if the datum in column 4 is non-negative:

 
      plot 'file' using 1:( $4<0 ? 1/0 : ($2+$3)/2 )

Please see using for an explanation of the using syntax.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.3 Gnuplot-defined variables

The variable `pi` is defined to be pi, see

 
      print pi

Additionally, gnuplot may define some variables under various operations.

Working with interactive terminals with `mouse` functionality defines variables with names that begin "MOUSE_", see variables for details.

Further, there are several "read-only" variables that begin "GPVAL_", like GPVAL_TERM, GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN,... Type `show variables all` to display their list and values. Values related to axes parameters (ranges, log base) are values used during the last plot, not those currently `set`.

The `fit` mechanism uses several variables with names that begin "FIT_". It is safest to avoid using such names. "FIT_LIMIT", however, is one that you may wish to redefine. Under `set fit errorvariables`, the error for each fitted parameter will be stored in a variable named like the parameter, but with "_err" appended. See the documentation on `fit` for details.

See variables, variables, and `fit`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.13.4 User-defined variables and functions

New user-defined variables and functions of one through five variables may be declared and used anywhere, including on the `plot` command itself.

User-defined function syntax:

 
      <func-name>( <dummy1> {,<dummy2>} ... {,<dummy5>} ) = <expression>

where <expression> is defined in terms of <dummy1> through <dummy5>.

User-defined variable syntax:

 
      <variable-name> = <constant-expression>

Examples:

 
      w = 2
      q = floor(tan(pi/2 - 0.1))
      f(x) = sin(w*x)
      sinc(x) = sin(pi*x)/(pi*x)
      delta(t) = (t == 0)
      ramp(t) = (t > 0) ? t : 0
      min(a,b) = (a < b) ? a : b
      comb(n,k) = n!/(k!*(n-k)!)
      len3d(x,y,z) = sqrt(x*x+y*y+z*z)
      plot f(x) = sin(x*a), a = 0.2, f(x), a = 0.4, f(x)

 
      file = "mydata.inp"
      file(n) = sprintf("run_%d.dat",n)

The final two examples illustrate a user-defined string variable and a user-defined string function.

Note that the variable `pi` is already defined. But it is in no way magic; you may redefine it to be whatever you like. Some other variables may be defined under various gnuplot operations like mousing in interactive terminals or fitting; see variables for details.

You can check for existence of a given variable V by the exists("V") expression. For example

 
      a = 10
      if (exists("a")) print "a is defined"
      if (!exists("b")) print "b is not defined"

Valid names are the same as in most programming languages: they must begin with a letter, but subsequent characters may be letters, digits, "$", or "_".

See `show functions`, `functions`, variables, macros.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.14 Glossary

Throughout this document an attempt has been made to maintain consistency of nomenclature. This cannot be wholly successful because as `gnuplot` has evolved over time, certain command and keyword names have been adopted that preclude such perfection. This section contains explanations of the way some of these terms are used.

A "page" or "screen" is the entire area addressable by `gnuplot`. On a monitor, it is the full screen; on a plotter, it is a single sheet of paper.

A screen may contain one or more "plots". A plot is defined by an abscissa and an ordinate, although these need not actually appear on it, as well as the margins and any text written therein.

A plot contains one "graph". A graph is defined by an abscissa and an ordinate, although these need not actually appear on it.

A graph may contain one or more "lines". A line is a single function or data set. "Line" is also a plotting style. The word will also be used in sense "a line of text". Presumably the context will remove any ambiguity.

The lines on a graph may have individual names. These may be listed together with a sample of the plotting style used to represent them in the "key", sometimes also called the "legend".

The word "title" occurs with multiple meanings in `gnuplot`. In this document, it will always be preceded by the adjective "plot", "line", or "key" to differentiate among them.

A 2-d graph may have up to four labelled axes. The names of the four axes for these usages are "x" for the axis along the bottom border of the plot, "y" for the left border, "x2" for the top border, and "y2" for the right border.

A 3-d graph may have up to three labelled axes - "x", "y" and "z". It is not possible to say where on the graph any particular axis will fall because you can change the direction from which the graph is seen with view.

When discussing data files, the term "record" will be resurrected and used to denote a single line of text in the file, that is, the characters between newline or end-of-record characters. A "point" is the datum extracted from a single record. A "datablock" is a set of points from consecutive records, delimited by blank records. A line, when referred to in the context of a data file, is a subset of a datablock.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.15 linetype, colors, and styles

Each gnuplot terminal type provides a set of distinct "linetypes". These may differ in color, in thickness, in dot/dash pattern, or in some combination of color and dot/dash. The default linetypes for a particular terminal can be previewed by issuing the test command after setting the terminal type. The pre-defined colors and dot/dash patterns are not guaranteed to be consistent for all terminal types, but all terminals use the special linetype -1 to mean a solid line in the primary foreground color (normally black). By default, successive functions or datafiles plotted by a single command will be assigned successive linetypes. You can override this default by specifying a particular linetype for any function, datafile, or plot element.

Examples:

 
     plot "foo", "bar"                 # plot two files using linetypes 1, 2
     plot sin(x) linetype 4            # terminal-specific linetype color 4
     plot sin(x) lt -1                 # black

For many terminal types it is also possible to assign user-defined colors using explicit rgb (red, green, blue) values, named colors, or color values that refer to the current PM3D palette.

Examples:

 
     plot sin(x) lt rgb "violet"       # one of gnuplot's named colors
     plot sin(x) lt rgb "#FF00FF"      # explicit RGB triple in hexadecimal
     plot sin(x) lt palette cb -45     # whatever color corresponds to -45
                                       # in the current cbrange of the palette
     plot sin(x) lt palette frac 0.3   # fractional value along the palette

See colornames, palette, cbrange.

For terminals that support dot/dash patterns, each default linetype has both a dot-dash pattern and a default color. However, you can override the default color by using the keyword `linecolor`, abbreviated `lc`. For example, the postscript terminal provides a dashed blue line as linetype 3. The plot commands below use this same dash pattern for three plots, one in blue (the default), another in red (the default for linetype 1), and a third in gold.

Example:

 
     set term postscript dashed color
     plot 'foo' lt 3, 'baz' lt 3 linecolor 1, 'bar' lt 3 lc rgb 'gold'

Lines can have additional properties such as linewidth. You can associate these various properties, as well as equivalent properties for point symbols, into user-defined "line styles" using the command `set style line`. Once you have defined a linestyle, you can use it in a plot command to control the appearance of one or more plot elements.

Examples:

 
     # define a new line style with terminal-independent color cyan,
     # linewidth 3, and associated point type 6 (a circle with a dot in it).
     set style line 5 lt rgb "cyan" lw 3 pt 6
     plot sin(x) with linespoints ls 5          # user-defined line style 5

See `linestyle`, `set style line`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.15.1 colorspec

Many commands allow you to specify a linetype with an explicit color. This option is only possible for terminals that support RGB color or pm3d palettes.

Syntax:

 
      ... {linetype | lt} <colorspec>

where <colorspec> has one of the following forms:

 
      rgbcolor "colorname"
      rgbcolor "#RRGGBB"
      rgbcolor variable
      palette frac <val>      # <val> runs from 0 to 1
      palette cb <value>      # <val> lies within cbrange
      palette z

"colorname" refers to one of the color names built in to gnuplot. For a list of the available names, see colornames.

"#RRGGBB" is a hexadecimal constant preceded by the "#" symbol. The RRGGBB represents the red, green, and blue components of the color, each on a scale from 0 - 255. For example, magenta = full-scale red + full-scale blue would be represented by #FF00FF, which is the hexadecimal representation of (255 << 16) + (0 << 8) + (255).

"rgb variable" requires an additional column in the using specifier, and is only available in 3D plotting mode (splot). The extra column is interpreted as a 24-bit packed RGB triple. These are most easily specified in a data file as hexidecimal values (see above).

Example:

 
      rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
      splot "data" using 1:2:3:(rgb($1,$2,$3)) with points lc rgb variable

The color palette is a linear gradient of colors that smoothly maps a single numerical value onto a particular color. Two such mappings are always in effect. `palette frac` maps a fractional value between 0 and 1 onto the full range of the color palette. `palette cb` maps the range of the color axis onto the same palette. See cbrange. See also `set colorbox`. You can use either of these to select a constant color from the current palette.

"palette z" maps the z value of each plot segment or plot element into the cbrange mapping of the palette. This allows smoothly-varying color along a 3d line or surface. This option applies only to 3D plots (splot).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.16 mouse input

The `x11`, `pm`, `windows`, `ggi`, and `wxt` terminals allow interaction with the current plot using the mouse. They also support the definition of hotkeys to activate pre-defined functions by hitting a single key while the mouse focus is in the active plot window. It is even possible to combine mouse input with `batch` command scripts, by invoking the command `pause mouse` and then using the mouse variables returned by mouse clicking as parameters for subsequent scripted actions. See bind and variables. See also the command `set mouse`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.16.1 bind

The bind allows defining or redefining a hotkey, i.e. a sequence of gnuplot commands which will be executed when a certain key or key sequence is pressed while the driver's window has the input focus. Note that bind is only available if gnuplot was compiled with `mouse` support and it is used by all mouse-capable terminals. Bindings overwrite the builtin bindings (like in every real editor), except <space> and 'q' which cannot be rebound (unless one exception, see below). Mouse buttons cannot be rebound.

You get the list of all hotkeys by typing bind or by hitting 'h' in the graph window.

Note that multikey-bindings with modifiers have to be quoted.

Normally hotkeys are only recognized when the currently active plot window has focus. `bind allwindows <key> ...` (short form: `bind all <key> ...`) causes the binding for <key> to apply to all gnuplot plot windows, active or not. In this case gnuplot variable MOUSE_KEY_WINDOW is set to the ID of the originating window, and may be used by the bound command.

By default, the <space> hotkey raises gnuplot's command window. On some terminals (e.g. x11, wx), 'q' closes the graph window. These defaults can be changed to ctrl-space and ctrl-q by starting gnuplot as 'gnuplot -ctrlq', see `x11 command-line-options`, or by the X Resource 'gnuplot*ctrlq'. Note: if <space> (or ctrl-space) does not raise the gnuplot window under X11, see discussion in raise.

Syntax:

 
      bind {allwindows} [<key-sequence>] ["<gnuplot commands>"]
      bind!

Examples:

- set bindings:

 
    bind a "replot"
    bind "ctrl-a" "plot x*x"
    bind "ctrl-alt-a" 'print "great"'
    bind Home "set view 60,30; replot"
    bind all Home 'print "This is window ",MOUSE_KEY_WINDOW'

- show bindings:

 
    bind "ctrl-a"          # shows the binding for ctrl-a
    bind                   # shows all bindings

- remove bindings:

 
    bind "ctrl-alt-a" ""   # removes binding for ctrl-alt-a
                             (note that builtins cannot be removed)
    bind!                  # installs default (builtin) bindings

- bind a key to toggle something:

 
  v=0
  bind "ctrl-r" "v=v+1;if(v%2)set term x11 noraise; else set term x11 raise"

Modifiers (ctrl / alt) are case insensitive, keys not:

 
    ctrl-alt-a == CtRl-alT-a
    ctrl-alt-a != ctrl-alt-A

List of modifiers (alt == meta):

 
    ctrl, alt

List of supported special keys:

 
   "BackSpace", "Tab", "Linefeed", "Clear", "Return", "Pause", "Scroll_Lock",
   "Sys_Req", "Escape", "Delete", "Home", "Left", "Up", "Right", "Down",
   "PageUp", "PageDown", "End", "Begin",

 
   "KP_Space", "KP_Tab", "KP_Enter", "KP_F1", "KP_F2", "KP_F3", "KP_F4",
   "KP_Home", "KP_Left", "KP_Up", "KP_Right", "KP_Down", "KP_PageUp",
   "KP_PageDown", "KP_End", "KP_Begin", "KP_Insert", "KP_Delete", "KP_Equal",
   "KP_Multiply", "KP_Add", "KP_Separator", "KP_Subtract", "KP_Decimal",
   "KP_Divide",

 
   "KP_1" - "KP_9", "F1" - "F12"

See also help for `mouse` and if.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.16.2 Mouse variables

When mousing is active, clicking in the active window will set several user variables that can be accessed from the gnuplot command line. The coordinates of the mouse at the time of the click are stored in MOUSE_X MOUSE_Y MOUSE_X2 and MOUSE_Y2. The mouse button clicked, and any meta-keys active at that time, are stored in MOUSE_BUTTON MOUSE_SHIFT MOUSE_ALT and MOUSE_CTRL. These variables are set to undefined at the start of every plot, and only become defined in the event of a mouse click in the active plot window. To determine from a script if the mouse has been clicked in the active plot window, it is sufficient to test for any one of these variables being defined.

 
      plot 'something'
      pause mouse
      if (defined(MOUSE_BUTTON)) call 'something_else'; \
      else print "No mouse click."

It is also possible to track keystrokes in the plot window using the mousing code.

 
      plot 'something'
      pause mouse keypress
      print "Keystroke ", MOUSE_KEY, " at ", MOUSE_X, " ", MOUSE_Y

When `pause mouse keypress` is terminated by a keypress, then MOUSE_KEY will contain the ascii character value of the key that was pressed. MOUSE_CHAR will contain the character itself as a string variable. If the pause command is terminated abnormally (e.g. by ctrl-C or by externally closing the plot window) then MOUSE_KEY will equal -1.

Note that after a zoom by mouse, you can read the new ranges as GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN, and GPVAL_Y_MAX, see variables.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.17 Plotting

There are three `gnuplot` commands which actually create a plot: `plot`, `splot` and replot. `plot` generates 2-d plots, `splot` generates 3-d plots (actually 2-d projections, of course), and replot appends its arguments to the previous `plot` or `splot` and executes the modified command.

Much of the general information about plotting can be found in the discussion of `plot`; information specific to 3-d can be found in the `splot` section.

`plot` operates in either rectangular or polar coordinates - see `set polar` for details of the latter. `splot` operates only in rectangular coordinates, but the mapping command allows for a few other coordinate systems to be treated. In addition, the using option allows both `plot` and `splot` to treat almost any coordinate system you'd care to define.

`plot` also lets you use each of the four borders - x (bottom), x2 (top), y (left) and y2 (right) - as an independent axis. The `axes` option lets you choose which pair of axes a given function or data set is plotted against. A full complement of `set` commands exists to give you complete control over the scales and labelling of each axis. Some commands have the name of an axis built into their names, such as xlabel. Other commands have one or more axis names as options, such as `set logscale xy`. Commands and options controlling the z axis have no effect on 2-d graphs.

`splot` can plot surfaces and contours in addition to points and/or lines. In addition to `splot`, see isosamples for information about defining the grid for a 3-d function; datafile for information about the requisite file structure for 3-d data values; and contour and cntrparam for information about contours.

In `splot`, control over the scales and labels of the axes are the same as with `plot`, except that commands and options controlling the x2 and y2 axes have no effect whereas of course those controlling the z axis do take effect.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.18 Start-up

When `gnuplot` is run, it looks for an initialization file to load. This file is called `.gnuplot` on Unix and AmigaOS systems, and `GNUPLOT.INI` on other systems. If this file is not found in the current directory, the program will look for it in the HOME directory (under AmigaOS, Atari(single)TOS, MS-DOS, Windows and OS/2, the environment variable `GNUPLOT` should contain the name of this directory; on Windows NT, it will use `USERPROFILE` if GNUPLOT isn't defined). Note: if NOCWDRC is defined during the installation, `gnuplot` will not read from the current directory.

If the initialization file is found, `gnuplot` executes the commands in it. These may be any legal `gnuplot` commands, but typically they are limited to setting the terminal and defining frequently-used functions or variables.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.19 String constants and string variables

In addition to string constants, most gnuplot commands also accept a string variable, a string expression, or a function that returns a string. For example, the following four methods of creating a plot all result in the same plot title:

 
      four = "4"
      graph4 = "Title for plot #4"
      graph(n) = sprintf("Title for plot #%d",n)

 
      plot 'data.4' title "Title for plot #4"
      plot 'data.4' title graph4
      plot 'data.4' title "Title for plot #".four
      plot 'data.4' title graph(4)

Since integers are promoted to strings when operated on by the string concatenation operator, the following method also works:

 
      N = 4
      plot 'data.'.N title "Title for plot #".N

In general, elements on the command line will only be evaluated as possible string variables if they are not otherwise recognizable as part of the normal gnuplot syntax. So the following sequence of commands is legal, although probably should be avoided so as not to cause confusion:

 
      plot = "my_datafile.dat"
      title = "My Title"
      plot plot title title

There are three binary operators that require string operands: the string concatenation operator ".", the string equality operator "eq" and the string inequality operator "ne". The following example will print TRUE.

 
     if ("A"."B" eq "AB") print "TRUE"

See also the two string formatting functions `gprintf` and sprintf.

Substrings can be specified by appending a range specifier to any string, string variable, or string-valued function. The range specifier has the form [begin:end], where begin is the index of the first character of the substring and end is the index of the last character of the substring. The first character has index 1. The begin or end fields may be empty, or contain '*', to indicate the true start or end of the original string. E.g. str[:] and str[*:*] both describe the full string str.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.20 Substitution and Command line macros

When a command line to gnuplot is first read, i.e. before it is interpreted or executed, two forms of lexical substitution are performed. These are triggered by the presence of text in backquotes (ascii character 96) or preceded by @ (ascii character 64).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.20.1 Substitution of system commands in backquotes

Command-line substitution is specified by a system command enclosed in backquotes. This command is spawned and the output it produces replaces the backquoted text on the command line. Some implementations also support pipes; see special-filenames.

Command-line substitution can be used anywhere on the `gnuplot` command line, except inside strings delimited by single quotes.

Example:

This will run the program `leastsq` and replace `leastsq` (including backquotes) on the command line with its output:

 
      f(x) = `leastsq`

or, in VMS

 
      f(x) = `run leastsq`

These will generate labels with the current time and userid:

 
      set label "generated on `date +%Y-%m-%d` by `whoami`" at 1,1
      set timestamp "generated on %Y-%m-%d by `whoami`"


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.20.2 Substitution of string variables as macros

Substitution of command line macros is disabled by default, but may be enabled using the macros command. If macro substitution is enabled, the character @ is used to trigger substitution of the current value of a string variable into the command line. The text in the string variable may contain any number of lexical elements. This allows string variables to be used as command line macros. Only string constants may be expanded using this mechanism, not string-valued expressions. For example:

 
      set macros
      style1 = "lines lt 4 lw 2"
      style2 = "points lt 3 pt 5 ps 2"
      range1 = "using 1:3"
      range2 = "using 1:5"
      plot "foo" @range1 with @style1, "bar" @range2 with @style2

The line containing @ symbols is expanded on input, so that by the time it is executed the effect is identical to having typed in full

 
      plot "foo" using 1:3 with lines lt 4 lw 2, \
           "bar" using 1:5 with points lt 3 pt 5 ps 2

The function exists() may be useful in connection with macro evaluation. The following example checks that C can safely be expanded as the name of a user-defined variable:

 
      C = "pi"
      if (exists(C)) print C," = ", @C

Macro expansion does not occur inside either single or double quotes. However macro expansion does occur inside backquotes.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.20.3 String variables, macros, and command line substitution

The interaction of string variables, backquotes and macro substitution is somewhat complicated. Backquotes do not block macro substitution, so

 
      filename = "mydata.inp"
      lines = ` wc --lines @filename | sed "s/ .*//" `

results in the number of lines in mydata.inp being stored in the integer variable lines. And double quotes do not block backquote substitution, so

 
      mycomputer = "`uname -n`"

results in the string returned by the system command `uname -n` being stored in the string variable mycomputer.

However, macro substitution is not performed inside double quotes, so you cannot define a system command as a macro and then use both macro and backquote substitution at the same time.

 
       machine_id = "uname -n"
       mycomputer = "`@machine_id`"  # doesn't work!!

This fails because the double quotes prevent @machine_id from being interpreted as a macro. To store a system command as a macro and execute it later you must instead include the backquotes as part of the macro itself. This is accomplished by defining the macro as shown below. Notice that the sprintf format nests all three types of quotes.

 
      machine_id = sprintf('"`uname -n`"')
      mycomputer = @machine_id


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.21 Syntax

Version 4 of gnuplot is much less sensitive than earlier versions to the order of keywords and suboptions. However, if you get error messages from specifying options that you think should work, please try rearranging them into the exact order listed by the documentation.

Options and any accompanying parameters are separated by spaces whereas lists and coordinates are separated by commas. Ranges are separated by colons and enclosed in brackets [], text and file names are enclosed in quotes, and a few miscellaneous things are enclosed in parentheses. Braces {} are used for a few special purposes.

Commas are used to separate coordinates on the `set` commands arrow, key, and label; the list of variables being fitted (the list after the `via` keyword on the `fit` command); lists of discrete contours or the loop parameters which specify them on the cntrparam command; the arguments of the `set` commands dgrid3d, dummy, isosamples, offsets, origin, samples, size, `time`, and view; lists of tics or the loop parameters which specify them; the offsets for titles and axis labels; parametric functions to be used to calculate the x, y, and z coordinates on the `plot`, replot and `splot` commands; and the complete sets of keywords specifying individual plots (data sets or functions) on the `plot`, replot and `splot` commands.

Parentheses are used to delimit sets of explicit tics (as opposed to loop parameters) and to indicate computations in the using filter of the `fit`, `plot`, replot and `splot` commands.

(Parentheses and commas are also used as usual in function notation.)

Square brackets are used to delimit ranges given in `set`, `plot` or `splot` commands.

Colons are used to separate extrema in `range` specifications (whether they are given on `set`, `plot` or `splot` commands) and to separate entries in the using filter of the `plot`, replot, `splot` and `fit` commands.

Semicolons are used to separate commands given on a single command line.

Braces are used in text to be specially processed by some terminals, like postscript. They are also used to denote complex numbers: {3,2} = 3 + 2i.

At present you should not embed \n inside {} when using the PostScript terminal in `enhanced text` mode.

The EEPIC, Imagen, Uniplex, LaTeX, and TPIC drivers allow a newline to be specified by \\ in a single-quoted string or \\\\ in a double-quoted string.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.21.1 Quote Marks

Gnuplot uses three forms of quote marks for delimiting text strings, double-quote (ascii 34), single-quote (ascii 39), and backquote (ascii 96).

Filenames may be entered with either single- or double-quotes. In this manual the command examples generally single-quote filenames and double-quote other string tokens for clarity.

String constants and text strings used for labels, titles, or other plot elements may be enclosed in either single quotes or double quotes. Further processing of the quoted text depends on the choice of quote marks.

Backslash processing of special characters like \n (newline) and \345 (octal character code) is performed for double-quoted strings. In single-quoted strings, backslashes are just ordinary characters. To get a single-quote (ascii 39) in a single-quoted string, it has to be doubled. Thus the strings "d\" s' b\\" and 'd" s" b\' are completely equivalent.

Text justification is the same for each line of a multi-line string. Thus the center-justified string

 
      "This is the first line of text.\nThis is the second line."

will produce

 
                       This is the first line of text.
                          This is the second line.

but

 
      'This is the first line of text.\nThis is the second line.'

will produce

 
          This is the first line of text.\nThis is the second line.

Enhanced text processing is performed for both double-quoted text and single-quoted text, but only by terminals supporting this mode. See `enhanced text`.

Back-quotes are used to enclose system commands for substitution into the command line. See `substitution`.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.22 Time/Date data

`gnuplot` supports the use of time and/or date information as input data. This feature is activated by the commands `set xdata time`, `set ydata time`, etc.

Internally all times and dates are converted to the number of seconds from the year 2000. The command timefmt defines the format for all inputs: data files, ranges, tics, label positions--in short, anything that accepts a data value must receive it in this format. Since only one input format can be in force at a given time, all time/date quantities being input at the same time must be presented in the same format. Thus if both x and y data in a file are time/date, they must be in the same format.

The conversion to and from seconds assumes Universal Time (which is the same as Greenwich Standard Time). There is no provision for changing the time zone or for daylight savings. If all your data refer to the same time zone (and are all either daylight or standard) you don't need to worry about these things. But if the absolute time is crucial for your application, you'll need to convert to UT yourself.

Commands like xrange will re-interpret the integer according to timefmt. If you change timefmt, and then `show` the quantity again, it will be displayed in the new timefmt. For that matter, if you give the deactivation command (like xdata), the quantity will be shown in its numerical form.

The command `set format` defines the format that will be used for tic labels, whether or not the specified axis is time/date.

If time/date information is to be plotted from a file, the using option _must_ be used on the `plot` or `splot` command. These commands simply use white space to separate columns, but white space may be embedded within the time/date string. If you use tabs as a separator, some trial-and-error may be necessary to discover how your system treats them.

The following example demonstrates time/date plotting.

Suppose the file "data" contains records like

 
      03/21/95 10:00  6.02e23

This file can be plotted by

 
      set xdata time
      set timefmt "%m/%d/%y"
      set xrange ["03/21/95":"03/22/95"]
      set format x "%m/%d"
      set timefmt "%m/%d/%y %H:%M"
      plot "data" using 1:3

which will produce xtic labels that look like "03/21".

See the descriptions of each command for more details.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on September, 15 2007 using texi2html 1.76.