Earlier versions of Octave provided plotting through the use of gnuplot. This
capability is still available. But, newer versions of Octave offer more modern
plotting capabilities using OpenGL. Which plotting system is used is
controlled by the `graphics_toolkit`

function. See Graphics Toolkits.

The function call `graphics_toolkit ("qt")`

selects the Qt/OpenGL system,
`graphics_toolkit ("fltk")`

selects the FLTK/OpenGL system, and
`graphics_toolkit ("gnuplot")`

selects the gnuplot system. The three
systems may be used selectively through the use of the `graphics_toolkit`

property of the graphics handle for each figure. This is explained in
Graphics Data Structures.

**Caution:** The OpenGL-based toolkits use single precision variables
internally which limits the maximum value that can be displayed to
approximately *10^{38}*. If your data contains larger values you must use
the gnuplot toolkit which supports values up to *10^{308}*. Similarly,
single precision variables can accurately represent only 6-9 base10 digits. If
your data contains very fine differences (approximately 1e-8) these cannot be
resolved with the OpenGL-based graphics toolkits and the gnuplot toolkit
is required.

**Note:** The gnuplot graphics toolkit uses the third party program
gnuplot for plotting. The communication from Octave to gnuplot is done via a
one-way pipe. This has implications for performance and functionality.
Performance is significantly slower because the entire data set, which could
be many megabytes, must be passed to gnuplot over the pipe. Functionality
is negatively affected because the pipe is one-way from Octave to gnuplot.
Octave has no way of knowing about user interactions with the plot window (be
it resizing, moving, closing, or anything else). It is recommended not to
interact with (or close) a gnuplot window if you will access the figure from
Octave later on.