PLplot
PLplot is a multi-platform scientific plotting library written in C, with bindings available for a broad range of programming languages, such as C++, Java, Lua, Octave, Python, but Fortran as well. PLplot features non-interactive and interactive device drivers, i. e., the output is either written to file in PNG, SVG, PDF, and other formats, or shown in a window (X11, Qt, GTK). The library is licenced under LGPL.
The core library provides routines to create XY plots, semi-log plots, log-log plots, contour plots, 3D surface plots, mesh plots, bar charts, and pie charts. It is possible to place multiple graphs on a single page, and multiple pages are allowed for those devices that support them.
- Fig. 1: Example output of PLplot
Installation
PLplot is available as a package on most Unix-like operating systems. Just
install package math/plplot
on FreeBSD:
# pkg install math/plplot
Make sure that the package has been built with Fortran support. Any Fortran
application has to be linked either against -lpgplot
(shared
library) or libpgplot.a
(static library) to access the PLplot
procedures, additionally to -lX11
. The PLplot package includes a
selection of example programs in directory
/usr/local/share/plplot5.15.0/examples/fortran/
(FreeBSD).
Example
The following very basic example simply plots a sine wave using PLplot (fig. 1).
! plot.f90
program plot
use :: plplot
implicit none
integer, parameter :: N = 2000
real, parameter :: XSTEP = 0.01
real :: x(N), y(N)
real :: xmax, xmin, ymax, ymin
integer :: i, rc
xmin = 0.0
xmax = XSTEP * N
ymin = -10.0
ymax = 10.0
! Prepare data.
do i = 1, N
x(i) = XSTEP * i
y(i) = 7.5 * sin(x(i))
end do
! Parse and process command line arguments.
rc = plparseopts(PL_PARSE_FULL)
if (rc /= 0) stop 'Error: Parsing command-line arguments failed'
call plscolbg(16, 16, 16) ! Set background colour (RGB).
call plinit() ! Initialise PLplot.
call plcol0(15) ! Set foreground colour.
! Create a labeled box that contains the plot.
call plenv(xmin, xmax, ymin, ymax, 0, 0)
call pllab('x', 'y = 7.5 sin(x)', '2D line plot using PLplot' )
! Plot the data as line diagram.
call plline(x, y)
! Close PLplot library
call plend()
end program plot
Compile and link the example against -lplplotfortran
:
$ gfortran13 -I/usr/local/lib/fortran/modules/plplot -o plot plot.f90 -lplplotfortran
Execute the binary with desired output device and plot size:
$ ./plot -dev xwin -geometry 640x400
Passing the command-line argument -h
prints all available
options to stdout:
$ ./plot -h
Usage:
./plot [options]
PLplot options:
-h Print out this message
-v Print out the PLplot library version number
-verbose Be more verbose than usual
-debug Print debugging info (implies -verbose)
-dev name Output device name
-o name Output filename
-display name X server to contact
-px number Plots per page in x
-py number Plots per page in y
-geometry geom Window size/position specified as in X, e.g., 400x300, 400x300-100+200, +100-200, etc.
-wplt xl,yl,xr,yr Relative coordinates [0-1] of window into plot
-mar margin Margin space in relative coordinates (0 to 0.5, def 0)
-a aspect Page aspect ratio (def: same as output device)
-jx justx Page justification in x (-0.5 to 0.5, def 0)
-jy justy Page justification in y (-0.5 to 0.5, def 0)
-ori orient Plot orientation (0,1,2,3=landscape,portrait,seascape,upside-down)
[...]
Output Devices
The supported output device drivers are selected through command-line
argument -dev
(tab. 1).
-
Parameter Description xwin
X window (Xlib) ps
PostScript file (monochrome) psc
PostScript file (color) xfig
Fig file null
Null device mem
User-supplied memory device psttf
PostScript file (monochrome) psttfc
PostScript file (color) svg
Scalable Vector Graphics (SVG 1.1) xcairo
Cairo X window driver pdfcairo
Cairo PDF driver pscairo
Cairo PostScript driver epscairo
Cairo EPS driver svgcairo
Cairo SVG driver pngcairo
Cairo PNG driver memcairo
Cairo memory driver extcairo
Cairo external Context driver - Tab. 1: Selection of output devices supported by PLplot
References
- PLplot: Official website
- Documentation of the PLplot plotting software (PDF)
Further Reading
- V. Sharma: Using PLplot with Fortran
< PGPLOT | [Index] | DISLIN > |