is nice and powerful graph and surfaces plotting program freely available for various operating systems: UNIX, OS/2, VMS, DOS, BeOS, Windows, Mac, Atari,... with the output for many printers and other plotting "devices", like PostScript, LaTeX, fig, HPGL, MetaFont,...

Table of contents

Hot news in March 2010:
gnuplot 4.4.0 has been released! Download and enjoy it!

Hot news in September 2004:
gnuplot 4.2.4 has been released! Download and enjoy it! Considerably improved, many more nice features (as mentioned below).

You can download the latest official version:

gnuplot 4.2.x

There are a lot of nice as well as important improvements. Be sure to read the documentation as well as the web page (mainly if you have not followed the gnuplot development for a long time).

Interesting gnuplot sites

gnuplot main ftp site
directory with contributed code/enhancements at gnuplot main site
directory with recent patches at gnuplot main site

R. Fearick
gnuplot and OS/2 by the author of PM gnuplot driver
A. Mai
gnuplot and OS/2
P. Mikulik
the page you are just reading
B. Reiter
demo web pages by Alex Woo

gnuplot info
another information
site at gatech
here gnuplot beta web page
another gnuplot beta web page
gnuplot FAQ
FAQ is what you should read before asking (very obsolete I think)

Mouseable enhancement of gnuplot for Presentation Manager (OS/2) and X11 terminals!

Cool: mouse support for OS/2 PM was available as a patch to gnuplot 3.6 pl 336 (April 1998), then it was integrated in the development beta version series since gnuplot, and X11 mouse has been added since gnuplot 3.8c. Then it has been integrated to the sources available through SourceForge.

Cool - previous: gnuplot OS/2 PM terminal comes to you with mouse support! OS/2 was the first platform having mouse support in gnuplot --- since spring 1998. The mouse support for X11 terminal is available since January 2000. Here is the first announcement of both PM + X11 mouseable terminals as released on January 21, 2000:


		Hello everybody,

We worked hard in the last weeks (months...) to get the best of two different
mouse versions merged.  Note that the OS/2 PM terminal is mouse-capable since 
March 1998, and we have been running mouseable X11 terminal since October 1999.
Those two versions were rewritten in order to be open for an easy accomodation 
of mouse capabitities of other terminals (move of most functions from 
stand-alone terminals to gnuplot core and an addition of new terminal entries.)
Now we have got the enclosed mouse-capable version which works (again) in PM 
and X11 terminals.

The usage of the mouse is mainly self-explanatory.  Just type 'h' in the
graph window (hereafter we mean either PM or X11 terminal window) and a short
overview of commands will pop up.  The mouse is turned on and off with the
hotkey 'm'. The mouse is *on* by default unless turned off in the gnuplot
startup script. Furthermore, the PM terminal contains a menu where some of the 
mouse actions are available via mouse click; in addition, OS/2 can run both 
mouseable PM and X11 terminals (simultaneously :-).

Besides the mouse stuff, some additional topics were implemented:

 -  a `bind' command to bind `hotkeys' to any gnuplot commands.
    see `help bind'. Some keys are pre-bound to builtin functions
    which can be overridden.
 -  a configurable mouse behaviour via `set mouse'.
    see `help mouse'.
 -  added an `else' to the `if' command.
    see `help if'.  This was mainly done to enable toggle
    actions for the `bind' command.
 -  added an `set historysize' command when using gnu readline.
    see `help historysize'.
 -  added a `set term x11 driver <path>' option to the x11 driver.
    This enables changing of the default driver name `gnuplot_x11'.
    The default driver name can also be changed at compile time
    by the option --with-X11-driver=<path>. This is useful, if
    several gnuplot versions exist on one system. See `help x11'.
 -  added `set term x11 [no]persist' and `set term x11 [no]raise'
    options to the x11 driver. Setting these will override the
    command line or Xresource settings. (Un)setting these will
    take immediately effect, so the behaviour of an open x11
    driver's window can be changed.
  - introduced a `set label <label options> pointstyle <style>' option.
    If this option is set, a point with <style> (like pointstyles in
    other commands) is drawn at the selected position and the text is
    displaced a bit.  The size is taken from `set pointsize'. This
    option is used when plotting permanent labels with Button 2.

NOTE that we carefully updated the docs (gnuplot.doc), so if you're
in doubt, you should always be able to do `help <keyword>`.


  The mouse must be enabled at compile time:
  ./configure --enable-mouse [other configure options] ...
  make install

  Mouse support is compiled in if MOUSE=1 is present in makefile.os2
  (the default).


  On OS/2, the communication between gnupmdrv and gnuplot is implemented by
  shared memory and an event semaphore.  On Unix, we decided to use a
  bidirectional pipe for (ipc communication).  The readline interfaces were
  modified to listen to both stdin and the ipc file descriptor.  (Well, that's
  just the usual way).  Note that if compiling with gnu readline, you must
  have a gnu readline version > 2.2 (3.0).  This will not be a major drawback,
  as 2.2 is out for years now and the current gnu readline version is 4.0.
  The communication code is located in

  For splots (3d) the data is cached and can therefore be redrawn
  very quickly.  This enables smooth rotating and zooming of splots.

  The X11 part is kept as *simple* as possible -- using the
  default font and color, no fancy toolkit widgets ...


 - implement a binary protocol for X11 (note: protocol of PM is binary). This 
   is supposed to speed up things considerably, especially for large 3d plots.

Comments are welcome!

Petr Mikulik <>
Pieter-Tjerk de Boer <>
Johannes Zellner <>

January 21, 2000

Here is the old text for PM and X11 mouse capabilities. No time to update it, sorry...but enjoy the figures, at least.

I have patched gnuplot's PM terminal for mouse support. The pm terminal possesses the following new functions with respect to the "original" PM (Presentation Manager, not Petr Mikulik's, of course) terminal:

A snapshot demonstrating the mouse and a ruler at a semilogarithmic graph, where the bottom line shows the mouse position and the distance from the ruler, is shown here:
Another snapshot below demonstrates the mouse on a pm3d map together with a ruler. The bottom line shows the mouse position and its distance from the ruler in cartesian and polar coordinates:

Here is a snapshot of the mouse menu:

and here the utils menu:

Current version: get and compile the development version.

Enjoy gnuplot! And OS/2, the first platform with its mouse support :-)) And X11, the second one.

Mouseable X11 terminal

Cool: gnuplot's X11 terminal comes to you with mouse support (November 1999)! The X11-specific work has been done by Johannes Zellner and Pieter-Tjerk de Boer. The same mouse functionality has been achieved for both PM and X11 terminals. In addition, the X11 terminal lets you interactively (by mouse) change view and zoom of splots.

Enjoy gnuplot! And X11, the second terminal with mouse support :-))

pm3d: new splot mode for colour/gray maps and surfaces

Up-to-date note: pm3d is a part of the released version of gnuplot 4.0. See more about its download at the bottom of this page.

Original text (mostly from winter/spring 1999):
I'd like to announce here a new type of splot mode: pm3d. This adds the possibility to draw colour/gray maps and surfaces to contours and wired surfaces currently supported. I tried to implement my pm3d algorithm developed already in my programs pm3d and pmgraf (see the snapshots there).

pm3d relies on new terminal entries for filled colour polygons and palette of smooth colours. This is now implemented for these terminals:

This implementation must be considered as `proposed', not `final', see below.

Some snapshots now:

Capturing PM terminal window plotted by the script

set pm3d at st
#set grid
set key below
set border 4095
set surface
set samples 25
set isosamples 20
set ticslevel 0
set title "surface and pm3d (surface and top) of radial sinc function"
splot [-15:15.01] [-15:15.01] [-0.2:1] \
  sin(sqrt(x**2+y**2)) / sqrt(x**2+y**2)

Here comes one of the demo figures from contour.dem plotted with set pm3d at bs into the gif terminal:

The next figure shows the Rosenbrock valley as in the gnuplot demo directory. There is a multiplot mode with pm3d on bottom and surface (top figure), pm3d colour map (that's what is my pm3d program doing) on left, and the usual contour map (i.e. no pm3d) on right. The output file was postscript and rastered into bitmap by ghostcript. The colour formulae (see doc) of the smooth colours are 21,11,6 for the upper figure and 7,5,15 for the left figure (this was changed by hand in the postscript file---i.e. just three numbers changed). So look:

The following figure, published in this review article, shows the simultaneous use of the pm3d mode and contour map:

And what about the reciprocal space representation of our famous GaAs fish? (This result from an x-ray reflectivity synchrotron measurement is far from being small equidistant grid: there are 189 scans with 21 to 397 points, and having 39501 points altogether). The following is a capture of PM terminal window:

pm3d functionality for the fig terminal has been added by Ian MacPhedran. Here is a partial capture of the Xfig 3.2 window (running under XFree86-OS/2):

How to download the current development source code

Up-to-date source code of gnuplot (development version of gnuplot, series 4.0) resides at SourceForge group gnuplot (group_id=2055). Execute the following to download sources (it requires program cvs, not ftp!):
  cvs login
  cvs -z3 checkout gnuplot
Compiling this development version of gnuplot on Unix can be done from inside gnuplot source directory by the following commands:

  # Choose one, or add any other option as listed by "./configure --help":
  ./configure			   # if you are root: installs to /usr/local
  ./configure --prefix=$HOME/usr   # single-user installation to $HOME/usr


  make install-strip
Note 1: Command ./prepare creates the configuration script ./configure, and it requires some newer version of autoconf package.
This ./prepare step is not needed for oficially released gnuplot, i.e. when configuring and compiling a gnuplot-*.tar.gz source package.

Note 2: single-user installations requires presence of directories $HOME/usr/bin, $HOME/usr/lib, $HOME/usr/man, $HOME/usr/info, and $HOME/usr/share. Then you should have $HOME/usr/bin listed in your PATH first, e.g. in your $HOME/.profile you need


Note 3: You can install gnuplot through rpm package system by

  checkinstall make install-strip requires package checkinstall, which may be a part of your Linux distribution. This way you can easily deinstall this new gnuplot any later.

Note 4: Please read docs and run demos to see how it works. (FAQ: pm3d does not plot my datafile! Answer: there are no blank lines in between subsequent scans / isolines. Read docs and look to demos!)

For other operating systems, use the prepared Makefile.* in directory gnuplot/config. Read also INSTALL for more details (actively maintained are Makefiles for OS/2, Windows, and probably some others; you are welcome to contribute for other operating systems). Binaries for these systems are not provided---it is develoopment version, and you are supposed to compile gnuplot yourself if you really want it (well, compiling it is easy). You may find some precompiled binaries at some places, like here (for OS/2 and Windows) -- but always: notice that the "latest precompiled binaries" are *always* older than the current development sources, so if you notice any problem, please get and recompile up-to-date gnuplot yourself it is easy, and don't report bugs found in such obsolete binaries.

You can read this announcement where some more details about gnuplot on SourceForge are described.

You may or may not experience some problems with the version of automake and autoconf you have. Versions later than automake 1.4 and autoconf-2.13 may or may not break gnuplot autoconf setup by incompatibility (autoconf-2.15 is very unfamous for its new incompatibilities).

That's all.