PLplot includes three-dimensional plot routines that plot
functions of the two independent variables x
and
y
in a variety of ways (see the section called “Surface Plots”, the section called “Contour Plots”, the section called “Shade plots”, the section called “Image plots”, and the section called “Vector plots”).
PLplot provides the routines plmesh
, plmeshc
,
plot3d
, plot3dc
, plot3dcl
, plsurf3d
, plsurf3dl
and plfill3
to plot the projection of a 3D surface on an existing 2D window. Our
standard examples 08, 11, 15, 21, and 28 illustrate how
these routines are used.
In all cases the transformations required to plot the
projection of a 3D surface on a 2D window are configured by plw3d
and are done to a rectangular cuboid enclosing the 3D surface which
has its limits expressed in 3D world coordinates and also normalized
3D coordinates (used for interpreting the altitude and azimuth of the
viewing angle). This representation of the transformation process
allows considerable flexibility in specifying how the surface is
depicted. The lengths of the sides of the normalized rectangular
cuboid are independent of the 3D world coordinate ranges of each of
the variables, making it possible to use “reasonable”
viewing angles even if the ranges of the 3D world coordinates on the
axes are very different. The size of the normalized rectangular
cuboid is determined essentially by the size of the two-dimensional
window into which it is to be mapped. The normalized cuboid is
centered about its origin in the x
and
y
directions, but rests on the plane z =
0
. It is viewed by an observer located at altitude
alt
and azimuth az
, where both
angles are measured in degrees. The altitude should be restricted to
the range zero to ninety degrees for proper operation, and represents
the viewing angle above the xy plane of the normalized cuboid. The
azimuth is defined so that when az = 0
, the
observer sees the xz plane face on, and as the angle is increased, the
observer moves clockwise around the normalized cuboid as viewed from
above the xy plane. The azimuth can take on any value. In the above
list of examples, we have chosen x and y world-coordinate ranges near
(-1.0-1.0) for the 2D window, and x, y, z sizes of the normalized
cuboid near (1., 1., 1.), and users will likely want to adopt similar
values as well.
PLplot provides the plcont
routine for generating
contour plots and our standard examples 08, 14, 16, and 22 illustrate how
this routine is used. The contourer uses a contour-following
algorithm so that it is possible to use non-continuous line styles.
Further, one may specify arbitrary coordinate mappings from array
indices to world coordinates, such as for contours in a polar
coordinate system.
The path of each contour is initially computed in terms of
the values of the indices of the matrix that holds the data to be
contoured. Before these can be drawn in the current window (see the section called “Defining the Window”), it is necessary to convert from these array
indices into world coordinates. This transformation is normally done
by a callback function which is supplied as an argument to plcont
.
For C use of plcont
we have included directly in the PLplot library
the following transformation callback routines: pltr0
(identity
transformation); pltr1
(linear interpolation in singly dimensioned
coordinate arrays); and pltr2
(linear interpolation in doubly
dimensioned coordinate arrays), but other callbacks can be used for
the C case instead. The above list of examples illustrates how this
callback argument and associated transformation from index arguments to
world coordinates is implemented in each of our supported
languages.
PLplot provides the plshade
and plshades
routines for
generating shade plots and our standard examples 15, 16, 21, and 22 illustrate how
those routines are used including how the needed transformation from
index arguments to world coordinates is implemented in each of
our supported languages.
PLplot provides the plimage
and plimagefr
routines for
generating images plots and our standard example 20 illustrates how
those routines are used including how the needed transformation from
index arguments to world coordinates is implemented in each of
our supported languages.
PLplot provides the plvect
routine for
generating vector plots and our standard example 22 illustrates how
that routine is used including how the needed transformation from
index arguments to world coordinates is implemented in each of
our supported languages. In addition that routine shows
how to call plsvect
to set the arrow style for vector plots.