The Ada bindings have been augmented with a number of features which are intended to simplify the use of PLplot. They include high-level features for simplified plotting (such as easy foreground-background control, a collection of "simple plotters," and easy color map manipulations), integer options which have been given meaningful names, and a few other focused additions. Many users will find that they can do most of their work using the "simple plotters".
The default for PLplot is to draw its graphics on a black
background. A white background can be used instead with
Draw_On_White
or reset to the original mode with
Draw_On_Black
. Each of these manipulates color
map 0 by swapping black and white so that e.g.with
Draw_On_White
, formerly white lines on a black
background automatically become black lines on a white
background.
Several high-level but flexible plotters are available and more might be added in the future. It is expected that many users will find that these high-level routines are adequate for most of their day-to-day plotting.
Plot up to five x-y pairs with easy labelling, coloring, line width and styles, justification, and zooming.
Plot up to five y's against a single x with easy labelling and automatic line colors and styles.
Plot up to five x-y pairs with easy labelling and automatic line colors and styles.
Plot a single x-y pair with flexible labels, axis styles, colors, line width and style, justification, and zooming.
PLplot provides extensive manipulation and control of two separate color maps, color map 0 and color map 1. The Ada binding makes basic manipulations easier and also adds facilities for making snapshots of color map 0 so that any state of the map can easily be restored later. An initial snapshot is taken when the package is initialized so that the default color settings can always be restored after having been changed.
Another set of features lets the user reset the 16 individual
colors in color map 0 after a color definition has been changed. It is
important to note that while Set_Pen_Color(Red)
(plcol0
in the traditional binding) normally does
what it says, Red
simply has the value
1
. If the user changes the color map so that
1
corresponds to another color, then
Set_Pen_Color(Red)
will draw in that color instead
of red. To always assure that red is drawn even if the color map has
been changed for integer 1
, use
Set_Pen_Color(Reset_Red)
instead. These 16 "reset"
functions return the appropriate default integer for the specified
color but also reset that slot in the color table so that a subsequent
call such as Set_Pen_Color(Red)
will also cause
drawing in red.
Color map 1 also gets a easy-to-use makeover for Ada users.
There are several prebuilt color themes that are useful for quickly
making surface and mesh plots,
Color_Themes_For_Map_1_Type
. These color themes can
be quickly applied with
Quick_Set_Color_Map_1
.
Miscellaneous other Ada features include a prebuilt mask
function for Shade_Regions
that does no masking;
perhaps the most useful purpose is to provide a template for writing
mask functions that do mask. And there is a handy function for
calculating the contour levels for making contour plots.
Color table snapshots
Make_Snapshot_Of_Color_Map_0
Restore_Snapshot_Of_Color_Map_0
Restore_Default_Snapshot_Of_Color_Map_0
Color resetting functions for the 16 colors of color map 0
Reset_Black, Reset_Red, ..., Reset_White
Easy manipulation of color map 1
Prebuilt color themes for color map 1:
Color_Themes_For_Map_1_Type
Quick application of prebuilt color themes:
Quick_Set_Color_Map_1
Other features
A prebuilt mask function for
Shade_Regions
that does no masking:
Mask_Function_No_Mask
An easy way to calculate an array of contour levels for
contour plots: Calculate_Contour_Levels
The C version of PLplot uses a number of integers to mean specific things. Unfortunately, the meaning is lost when it it consigned to being a mere integer with no name. The Ada binding partially rectifies this situation by giving names to these integer constants. The integer can still be used if desired. (A more complete and safer rectification would use enumerated types.)
Below is a listing of at least the contexts in which these "re-namings" have been applied. In some cases the entire range of values is listed, but if there are more than about four such values for each context, only a sampling is given.
Instances
Colors: Plot_Color_Type
0
is Black, 1
is Red,
etc
Justification for plots:
Justification_Type
User_Justified
Not_Justified
Justified
Justified_Square_Box
Axis styles: Axis_Style_Type
Linear_Major_Grid
Linear_Minor_Grid
etc.
Font styles: Font_Style_Type
Normal_Font
Roman_Font
Italic_Font
Script_Font
Character sets: Character_Set_Type
Standard_Character_Set
Extended_Character_Set
Plot orientation: Orientation_Type
Landscape
Portrait
Modes for parsing command line arguments:
Parse_Mode_Type
E.g. PL_PARSE_PARTIAL
Descriptions of map outlines (continents, states, etc.):
Map_Type
Continents
USA_and_States
Continents_and_Countries
USA_States_and_Continents
Various style and view options for 3D and surface plots
E.g. Lines_Parallel_To_X
Kind of gridding algorithm for interpolating 2D data to a
grid: Gridding_Algorithm_Type
E.g.
Grid_Bivariate_Cubic_Spline_Approximation
Flags for histogram style
E.g. Histogram_Default
Flags for histogram binning
E.g. Bin_Default
Names for color space models
Hue, Lightness, Saturation: HLS
Red, Green, Blue: RGB
To provide convenient string handling in a fashion that is
familiar to Ada programmers, function versions which return a
String
type are provided of
Get_Device_Name
,
Get_Version_Number
, and
Get_Output_File_Name
(plgdev
,
plgver
, and plgfnam
in the
traditional binding). These functions replace the procedure-style
subprograms that are described in the C API documentation.
Overloaded Set_Line_Style
(plstyl
in the traditional binding) with a version
that takes a single argument,
Default_Continuous_Line
. This replaces the awkward
situation of calling the normal versions of these procedures with unused
arguments simply to set the line style to the default, continuous,
line.
The contour plotter Contour_Plot_Irregular_Data
(plfcont
in the traditional binding) is provided for
making contour plots from irregularly spaced data. This feature is not
documented in the PLplot API documentation.
The custom label function Set_Custom_Label
(plslabelfunc
in the traditional binding) can be
called with null arguments to revert to using the default labelling
scheme. Alternately, an Ada-only procedure with no arguments,
Use_Default_Labels
, is provided. See Ada example 19
(x19a.adb
or xthick19a.adb
) for a
usage example.
The custom coordinate transform setter,
Set_Custom_Coordinate_Transform
,
(plstransform
in the traditional binding) can be
called with null arguments to clear any previous custom coordinate
transforms that the user has set, thus reverting to the default
coordinate transform. Alternately, an Ada-only procedure with no
arguments, Clear_Custom_Coordinate_Transform
, is
provided. See Ada example 19 (x19a.adb
or
xthick19a.adb
) for a usage example.
The procedure Set_Arrow_Style_For_Vector_Plots
(plsvect
in the traditional binding) normally is called
to define the shape of an arrow in vector plots. However, calling it with
null pointer arguments (System.Null_Address
) in place
of the Real_Vector
arrays and False
for the Fill_Arrow
argument causes the arrow shape to
be reset to the default shape; this is implemented in Ada as an overloaded
procedure in order to be consistent with the C API but is rather awkward.
So there are two additional procedures that are added for the convenience
of Ada programmers: Reset_Vector_Arrow_Style and plsvect, both without
arguments, both available in both bindings, and the latter an overload of
the normal arrow-setting procedure.
The procedures Plot_Shapefile
and
Plot_Shapefile_World
(plmapfill
) and plmapline
in the traditional binding)
are each provided an overloaded version allowing either an array of
integers or a null pointer to be passed for the last argument, so that the
documentation makes sense. An additional related procedure is provided in
each case, Plot_Shapefile_All
and
Plot_Shapefile_World_All
(identically named in the traditional
binding) for the case when a null pointer would otherwise be passed, thus
allowing the Ada programmer a way to specify "plot all the Shapefile
elements" without having to conjure a null pointer. See Example 19.