| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
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
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] | [ ? ] |
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.1 Histogram | ||
| 1.4.1.2 Label plots | ||
| 1.4.1.3 Image data | ||
| 1.4.1.4 Filled curves | ||
| 1.4.1.5 Vectors |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Histograms, or bar charts, can be produced. See `histograms`.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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.1 RGB colors | ||
| 1.4.3.2 Arbitrary rectangles |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Explicit RGB colors can be specified for all plot elements instead of specifying a predefined linetype. See colorspec.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.1 String and text data read from datafiles | ||
| 1.4.4.2 User-defined string variables, operators, and functions |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnuplot can now read and process text fields in datafiles. See `datastrings`.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
Gnuplot supports command line macro expansion by '@stringvariablename'. See macros.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
Gnuplot now exports several "read-only" variables such as GPVAL_TERM, GPVAL_X_MIN, etc. See variables.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| 1.4.8.1 `wxt` | ||
| 1.4.8.2 `emf` | ||
| 1.4.8.3 `gif`, `jpeg`, `png` | ||
| 1.4.8.4 postscript | ||
| 1.4.8.5 `ai` | ||
| 1.4.8.6 `epslatex`, `pslatex`, `pstex` | ||
| 1.4.8.7 `windows` |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `windows` terminal now supports the `enhanced text` mode.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
Gnuplot version 4.0 contained many features introduced since the preceding official version 3.7. These are summarized here.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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.
| 1.13.1 Functions | ||
| 1.13.2 Operators | ||
| 1.13.3 Gnuplot-defined variables | ||
| 1.13.4 User-defined variables and functions |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `acosh(x)` function returns the inverse hyperbolic cosine of its argument in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `arg(x)` function returns the phase of a complex number in radians or degrees, as selected by angles.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
The `asinh(x)` function returns the inverse hyperbolic sin of its argument in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `atanh(x)` function returns the inverse hyperbolic tangent of its argument in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `besj0(x)` function returns the j0th Bessel function of its argument. besj0 expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `besj1(x)` function returns the j1st Bessel function of its argument. besj1 expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `besy0(x)` function returns the y0th Bessel function of its argument. besy0 expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `besy1(x)` function returns the y1st Bessel function of its argument. besy1 expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `cosh(x)` function returns the hyperbolic cosine of its argument. cosh expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `inverf(x)` function returns the inverse error function of the real part of its argument. See `erf` and invnorm.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
The `imag(x)` function returns the imaginary part of its argument as a real number.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
The `int(x)` function returns the integer part of its argument, truncated toward zero.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `log(x)` function returns the natural logarithm (base `e`) of its argument. See log10.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `log10(x)` function returns the logarithm (base 10) of its argument.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
The `real(x)` function returns the real part of its argument.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
The `sinh(x)` function returns the hyperbolic sine of its argument. sinh expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `sqrt(x)` function returns the square root of its argument.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
The `tanh(x)` function returns the hyperbolic tangent of its argument. tanh expects its argument to be in radians.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`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] | [ ? ] |
`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] | [ ? ] |
`strlen("string")` returns the number of characters in the string.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`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] | [ ? ] |
`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] | [ ? ] |
`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] | [ ? ] |
`word("string",n)` returns the nth word in string. For example, `word("one two three",2)` returns the string "two".
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`words("string")` returns the number of words in string. For example, `words(" a b c d")` returns the 4.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`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] | [ ? ] |
`defined(X)` [DEPRECATED] returns 1 if a variable named X has been defined, otherwise it returns 0.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
`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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
`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] | [ ? ] |
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] | [ ? ] |
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.
| 1.13.2.1 Unary | ||
| 1.13.2.2 Binary | ||
| 1.13.2.3 Ternary |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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`.
| 1.15.1 colorspec |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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`.
| 1.16.1 bind | ||
| 1.16.2 Mouse variables |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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).
| 1.20.1 Substitution of system commands in backquotes | ||
| 1.20.2 Substitution of string variables as macros | ||
| 1.20.3 String variables, macros, and command line substitution |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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.
| 1.21.1 Quote Marks |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
`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.