Announcement of PLplot-5.2.1

Three months and a lot of hard work after the release of PLplot-5.2.0, it is time for another stable release of this publication-quality scientific plotting package.

This is the first detailed PLplot release announcement since 5.1.0 so we will be covering both the changes (1000+ commits) between 5.1.0 and 5.2.0, and the additional changes (700+ commits) between 5.2.0, and the current 5.2.1.

API Additions

API Changes

Important Paradigm Shifts for 5.2.x

5.1.0 introduced the idea of plug-in or dynamic devices, and this paradigm shift lead to other paradigm shifts in the way our libraries were organized and the way we configured PLplot for 5.2.0. Because of limitations in the way our 5.1.0 code was organized into libraries several drivers (e.g., xwin, tk) could not be made dynamic. This problem was solved for 5.2.0 by reorganizing our code into a larger number of smaller libraries and shared objects where linking was strictly hierarchical (rather than having cross-linking between our various libraries and shared objects). This paradigm shift meant that code specific to particular interfaces was kept strictly in separate interface libraries; libplplot was strictly reserved for core plotting functions; and specialized device code was kept with the device shared objects (or plug-ins). A side benefit of this reorganization was that it became possible to load the plplot Tcl/Tk interface library directly into a tclsh or wish environment for the first time for Linux/Unix platforms. (See examples/tcl/README.tcldemos and examples/tk/README.tkdemos for the details.)

The library reorganization forced another paradigm shift in the way we did our configuration for 5.2.0. Our previous low-level pure autoconf-based configuration system was extremely difficult to adjust to the new library reorganization. Thus, we changed over to a high-level autotools (libtool and automake on top of autoconf) approach to generate our configuration. This paradigm shift is mostly transparent to the user (who should simple execute configure; make; and make install as before, see comments below), but it makes PLplot configuration much more maintainable and also potentially gives our users the ability to configure, build and run PLplot on a much wider variety of Unix platforms. For example, Unix users should now be able to use their native make command (as opposed to the GNU make we demanded before) and their native compiler to build PLplot using shared libraries, and dynamic drivers; something that was impossible before.

Although the new configuration has great cross-platform potential, it should be emphasized that the vast majority of our testing of PLplot-5.2.1 has been done on Linux (good reports for Debian, Mandrake, RedHat, and SuSe), and our Unix testing has so far been quite limited (good reports for OSF1 and NetBSD). Thus some additional minor changes might be required to get PLplot to work for other Unix platforms such as Solaris. User's feedback will be an essential part of determining what (if any) changes need to be made.

Here is a list of known exceptions to the expected cross-platform Unix support of PLplot.

5.2.0 Improvements

5.2.1 Improvements

Configuring, Building, Installing, and Testing PLplot


To configure Plplot just run the configure script with appropriate options (see below). It normally should find all resources (programmes, libraries, and headers) required to build PLplot on your system (or else after a warning turn off some aspect of PLplot that needs the missing resource).

Our configuration option defaults have substantially changed from 5.2.0. Every interface is turned on by default except for Java. You can turn that on by using the −−enable-java option. (Our new SWIG-generated Java interface works well to compile and run our rather complete Java examples without problems, but in our judgement the Java interface needs this fully publicized 5.2.1 release cycle of full user testing before we turn it on by default in the next release.) Every device driver is enabled by default except for gnome (still alpha quality software). Both shared and static libraries are built by default.

There are some important options you may want to use rather than the defaults. If you want to save the time and space required to build static libraries, specify −−disable-static. If you prefer the old-fashioned method of embedding the drivers into the library rather than the default method of using dynamic (or plug-in) drivers, specify −−disable-dyndrivers. If you prefer building single precision versions of all the libraries, specify −−without-double. If you want to install the pre-built documentation that is included in the tarball, specify −−with-prebuiltdoc. If you want a different installation prefix than the default /usr/local, specify it using, e.g., −−prefix=/usr/local/plplot.

You can find out quite a bit about configuration options using the −−help option to the configure command. Also, in difficult cases there are environment variables you can set to help the configure script find libraries and headers on your system. Most of these environment variables are not well documented, but you can usually figure them out by reading and

Building and installing

The usual make; make install.


Currently none of our examples work in the build directory (unless you take some extraordinary measures). Instead, you must install PLplot first, then (optionally) copy the *installed* examples directory to some user location, build the examples, and exercise them for a comprehensive test. Here are the details.

# Substitute your installation prefix for /usr/local/plplot.  Also note
# this cp step is not necessary if you can write files into your install area
# as an ordinary user.

cp -a /usr/local/plplot/lib/plplot5.2.1/examples /tmp
cd /tmp/examples

# build the installed examples that need compiling

cd c; make; cd c++; make; cd f77; make; cd tk; make; cd ..

# Run all the examples to produce many coloured postscript image files.

./ --device=psc

# Find out about other PLplot file devices to test such as png and jpeg.

./ --help

If you have installed the Tcl/Tk interface to PLplot you can do further interactive testing following the instructions in examples/tcl/README.tcldemos and examples/tk/README.tkdemos.

N.B. for all the above testing steps to work /usr/local/plplot/bin must be in your PATH.

The Future

The future for PLplot looks bright indeed. 5.2.1 consolidates the paradigm shifts of plug-in devices, library reorganization, and an autotools-based configuration scheme for PLplot and establishes an excellent infrastructure for further more incremental improvements.


I thank the rest of the PLplot core team for all their hard work in making PLplot-5.2.1 possible. Also, an external developer, Gary Bishop, deserves special thanks for his donation of the new SWIG-generated Python interface (which inspired my work on the SWIG-generated Java interface as well), and his complete rewrite of what is now called plsurf3d to eliminate our worst rendering bug in 5.1.0.

Alan W. Irwin, 2003 April 21