PLplot is a library of C functions that are useful for making scientific plots from programs written in C, C++, Fortran77, Fortran95, Java, Octave, Perl, Python, and Tcl/Tk. The PLplot project is being developed by a world-wide team who interact via the facilities provided by SourceForge (http://sourceforge.net/projects/plplot)
The PLplot library can be used to create standard x-y plots, semi-log plots, log-log plots, contour plots, 3D plots, shade (gray-scale and color) plots, mesh plots, bar charts and pie charts. Multiple graphs (of the same or different sizes) may be placed on a single page with multiple lines in each graph. Different line styles, widths and colors are supported. A virtually infinite number of distinct area fill patterns may be used. There is full unicode support in the PLplot library, and most of the display drivers are capable of displaying any of the millions(?) of characters in the unicode standard. Those driver that are not unicode enabled can still display almost 1000 characters in the extended character set. This includes four different fonts, the Greek alphabet and a host of mathematical, musical, and other symbols. A variety of output devices and file formats are supported including a metafile format which can be subsequently rendered to any device/file. New devices and file formats can be easily added by writing a driver routine. For example, we have recently added a postscript driver with TrueType font support (PSTTF), a SVG file driver and a PDF file driver. A wxWidgets interactive driver is currently in development.
PLplot was originally developed by Sze Tan of the University of Auckland in Fortran-77. Many of the underlying concepts used in the PLplot package are based on ideas used in Tim Pearson's PGPLOT package. Sze Tan writes:
I'm rather amazed how far PLPLOT has traveled given its origins etc. I first used PGPLOT on the Starlink VAX computers while I was a graduate student at the Mullard Radio Astronomy Observatory in Cambridge from 1983-1987. At the beginning of 1986, I was to give a seminar within the department at which I wanted to have a computer graphics demonstration on an IBM PC which was connected to a completely non-standard graphics card. Having about a week to do this and not having any drivers for the card, I started from the back end and designed PLPLOT to be such that one only needed to be able to draw a line or a dot on the screen in order to do arbitrary graphics. The application programmer's interface was made as similar as possible to PGPLOT so that I could easily port my programs from the VAX to the PC. The kernel of PLPLOT was modeled on PGPLOT but the code is not derived from it.
The C version of PLplot was developed by Tony Richardson on a Commodore Amiga. In the process, several of the routines were rewritten to improve efficiency and some new features added. The program structure was changed somewhat to make it easier to incorporate new devices. Additional features were added to allow three-dimensional plotting and better access to low-level routines.
PLplot 5.0 is a continuation of our work on PLplot 4.0, which never got widely distributed. It became clear during the work on 4.0 that in order to support an interactive driver under Unix (using Tcl/Tk), many additions to the basic capabilities of the package were needed. So without stopping to fully document and bug-fix the 4.0 additions, work on 5.0 was begun. The result is that a very capable PLplot-based widget for the Tk toolkit has been written. This widget can manipulate the plot (zoom/pan, scale, orient, change colors), as well dump it to any supported device. There are help menus and user customization options. These are still in the process of being documented.
Other changes include the introduction of a new color palette (cmap1) for smooth color shaded images (typically for 2d or 3d plots – in which color represents function intensity), support for color fill plots, and lots more cool stuff. The manual has been rewritten in LaTeXinfo, so that there is now a printed version and an online (info) version of the document. The manual is still in a state of flux and will be fleshed out in more detail in later updates.
Some of the improvements in PLplot 5.0 include: the addition of several new routines to enhance usage from Fortran and design of a portable C to Fortran interface. Additional support was added for coordinate mappings in contour plots and some bugs fixed. New labeling options were added. The font handling code was made more flexible and portable. A portable PLplot metafile driver and renderer was developed, allowing one to create a generic graphics file and do the actual rendering later (even on a different system). The ability to create family output files was added. The internal code structure was dramatically reworked, with elimination of global variables (for a more robust package), the drivers rewritten to improve consistency, and the ability to maintain multiple output streams added. An XFig driver was added. Other contributions include Clair Nielsen's (LANL) X-window driver (very nice for high-speed color graphics) and tektronix file viewer. At present, Maurice LeBrun and Geoff Furnish are the active developers and maintainers of PLplot.
We have attempted to keep PLplot 5.0 backward compatible with previous versions of PLplot. However, some functions are now obsolete, and many new ones have been added (e.g. new contouring functions, variable get/set routines, functions that affect label appearance). Codes written in C that use PLplot must be recompiled including the new header file plplot.h before linking to the new PLplot library.
PLplot is currently known to work on the following systems: Unix/Linux, Mac OS-X and Windows XP. The Unix/Linux version is the best supported of these possibilities. The PLplot package is freely distributable, but not in the public domain. See the Section called Copyrights for distribution criteria.
We welcome suggestions on how to improve this code, especially in the form of user-contributed enhancements or bug fixes. If PLplot is used in any published papers, please include an acknowledgment or citation of our work, which will help us to continue improving PLplot. Please direct all communication to the general PLplot mailing list, firstname.lastname@example.org.