StreamlinePlot class
The StreamlinePlot class represents a vector field by drawing streamlines.Synopsis
Header file: ncarg/hlu/StreamlinePlot.h Class name: streamlinePlotClass Class pointer: NhlstreamlinePlotClass Fortran class function: NHLFSTREAMLINEPLOTCLASS Superclass: DataComm Composite classes: LogLinTransformation, IrregularTransformation, CurvilinearTransformation, SphericalTransformation, PlotManager Data specific class Class name: streamlinePlotDataDepClass Class pointer: NhlstreamlinePlotDataDepClass Fortran class function: NHLFSTREAMLINEPLOTDATADEPCLASS Superclass: DataSpec
Class-defined types
Resources
Local resources
+---------------------------------------------------------------+ | StreamlinePlot Resource Set | |---------------------------------------------------------------| | NAME TYPE ACCESS | | CLASS DEFAULT | |===============================================================| | stVectorFieldData NhlTInteger RCSG | | StVectorFieldData <none> | |---------------------------------------------------------------| | stScalarFieldData NhlTInteger RCSG | | StScalarFieldData <none> | |---------------------------------------------------------------| | stStreamlineDrawOrder NhlTDrawOrder RCSG | | StStreamlineDrawOrder "Draw" | |---------------------------------------------------------------| | stMapDirection NhlTBoolean RCSG | | StMapDirection True | |---------------------------------------------------------------| | stLineStartStride NhlTInteger RCSG | | StLineStartStride 2 | |---------------------------------------------------------------| | stMinDistanceF NhlTFloat RCSG | | StMinDistanceF 0.0 | |---------------------------------------------------------------| | stStepSizeF NhlTFloat RCSG | | StStepSizeF <dynamic> | |---------------------------------------------------------------| | stMinLineSpacingF NhlTFloatGenArray RCSG | | StMinLineSpacingF <dynamic> | |---------------------------------------------------------------| | stMinStepFactorF NhlTFloatGenArray RCSG | | StMinStepFactorF 2.0 | |---------------------------------------------------------------| | stLengthCheckCount NhlTInteger RCSG | | StLengthCheckCount 35 | |---------------------------------------------------------------| | stCrossoverCheckCount NhlTInteger RCSG | | StCrossoverCheckCount -1 | |---------------------------------------------------------------| | stArrowStride NhlTInteger RCSG | | StArrowStride 2 | |---------------------------------------------------------------| | stMinArrowSpacingF NhlTFloatGenArray RCSG | | StMinArrowSpacingF 0.0 | |---------------------------------------------------------------| | stArrowLengthF NhlTFloat RCSG | | StArrowLengthF <dynamic> | |---------------------------------------------------------------| | stLevels NhlTFloatGenArray RCSG | | Levels <dynamic> | |---------------------------------------------------------------| | stLevelCount NhlTInteger RCSG | | StLevelCount 16 | |---------------------------------------------------------------| | stLevelSelectionMode NhlTLevelSelectionMode RCSG | | LevelSelectionMode "AutomaticLevels" | |---------------------------------------------------------------| | stMaxLevelCount NhlTInteger RCSG | | MaxLevelCount 16 | |---------------------------------------------------------------| | stLevelSpacingF NhlTFloat RCSG | | LevelSpacingF <dynamic> | |---------------------------------------------------------------| | stMinLevelValF NhlTFloat RCSG | | MinLevelValF <dynamic> | |---------------------------------------------------------------| | stMaxLevelValF NhlTFloat RCSG | | MaxLevelValF <dynamic> | |---------------------------------------------------------------| | stSpanLevelPalette NhlTBoolean RCSG | | StSpanLevelPalette True | |---------------------------------------------------------------| | stLevelPalette NhlTColorDefinitionGenArray RCSG | | StLevelPalette <None> | |---------------------------------------------------------------| | stLevelColors NhlTColorIndexGenArray RCSG | | StLevelColors <dynamic> | |---------------------------------------------------------------| | stUseScalarArray NhlTBoolean RCSG | | StUseScalarArray False | |---------------------------------------------------------------| | stScalarMissingValColor NhlTColorIndex RCSG | | StScalarMissingValColor "Foreground" | |---------------------------------------------------------------| | stMonoLineColor NhlTBoolean RCSG | | StMonoLineColor True | |---------------------------------------------------------------| | stLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | stLineColor NhlTInteger RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | stNoDataLabelOn NhlTBoolean RCSG | | AnnotationLabelsOn True | |---------------------------------------------------------------| | stNoDataLabelString NhlTString RCSG | | StNoDataLabelString <dynamic> | |---------------------------------------------------------------| | stZeroFLabelOn NhlTBoolean RCSG | | AnnotationLabelsOn True | |---------------------------------------------------------------| | stZeroFLabelString NhlTString RCSG | | StZeroFLabelString <dynamic> | |---------------------------------------------------------------| | stZeroFLabelFontHeightF NhlTFloat RCSG | | FontHeightF <dynamic> | |---------------------------------------------------------------| | stZeroFLabelTextDirection NhlTTextDirection RCSG | | TextDirection "Across" | |---------------------------------------------------------------| | stZeroFLabelFont NhlTFont RCSG | | Font "pwritx" | |---------------------------------------------------------------| | stZeroFLabelFontColor NhlTColorIndex RCSG | | FontColor "Foreground" | |---------------------------------------------------------------| | stZeroFLabelFontAspectF NhlTFloat RCSG | | FontAspectF 1.3125 | |---------------------------------------------------------------| | stZeroFLabelFontThicknessF NhlTFloat RCSG | | FontThicknessF 1.0 | |---------------------------------------------------------------| | stZeroFLabelFontQuality NhlTFontQuality RCSG | | FontQuality "High" | |---------------------------------------------------------------| | stZeroFLabelConstantSpacingF NhlTFloat RCSG | | TextConstantSpacingF 0.0 | |---------------------------------------------------------------| | stZeroFLabelAngleF NhlTFloat RCSG | | TextAngleF 0.0 | |---------------------------------------------------------------| | stZeroFLabelFuncCode NhlTCharacter RCSG | | TextFuncCode : | |---------------------------------------------------------------| | stZeroFLabelBackgroundColor NhlTColorIndex RCSG | | FillBackgroundColor "Background" | |---------------------------------------------------------------| | stZeroFLabelPerimOn NhlTBoolean RCSG | | EdgesOn True | |---------------------------------------------------------------| | stZeroFLabelPerimSpaceF NhlTFloat RCSG | | EdgeBorderWidthF 0.33 | |---------------------------------------------------------------| | stZeroFLabelPerimColor NhlTColorIndex RCSG | | EdgeColor "Foreground" | |---------------------------------------------------------------| | stZeroFLabelPerimThicknessF NhlTFloat RCSG | | EdgeThicknessF 1.0 | |---------------------------------------------------------------| | stZeroFLabelZone NhlTInteger RCSG | | StZeroFLabelZone 0 | |---------------------------------------------------------------| | stZeroFLabelSide NhlTPosition RCSG | | StZeroFLabelSide "Bottom" | |---------------------------------------------------------------| | stZeroFLabelJust NhlTJustification RCSG | | StZeroFLabelJust "CenterCenter" | |---------------------------------------------------------------| | stZeroFLabelParallelPosF NhlTFloat RCSG | | StZeroFLabelParallelPosF 0.0 | |---------------------------------------------------------------| | stZeroFLabelOrthogonalPosF NhlTFloat RCSG | | StZeroFLabelOrthogonalPosF 0.0 | |---------------------------------------------------------------| | stExplicitLabelBarLabelsOn NhlTBoolean RCSG | | StExplicitLabelBarLabelsOn False | |---------------------------------------------------------------| | stLabelBarEndLabelsOn NhlTBoolean RCSG | | StLabelBarEndLabelsOn False | |---------------------------------------------------------------| | stLabelFormat NhlTString RCSG | | NumberFormat "*+^sg" | +---------------------------------------------------------------+
Data specific resources
The StreamlinePlot class does not currently use any data specific resources.
Composite resources
Transformation resources
Transformation class resources specify the extent, direction and grid type of the data coordinate system. The Transformation class is the superclass of all classes used to perform data transformations, and you can access all its resources. However, note that StreamlinePlot intercepts its resources, as follows:-
- trXMinF
- By default trXMinF is set to the minimum data coordinate value along the X Axis, as determined from the contents of the VectorField object.
-
- trXMaxF
- By default trXMaxF is set to the maximum data coordinate value along the X Axis, as determined from the contents of the VectorField object.
-
- trXReverse
- By default trXReverse is set based on the direction of the X Axis implied by the contents of the VectorField object.
-
- trYMinF
- By default trYMinF is set to the minimum data coordinate value along the Y Axis, as determined from the contents of the VectorField object.
-
- trYMaxF
- By default trYMaxF is set to the maximum data coordinate value along the Y Axis, as determined from the contents of the VectorField object.
-
- trYReverse
- By default trYReverse is set based on the direction of the Y Axis implied by the contents of the VectorField object.
-
- trGridType
- trGridType is forced to
LogLin
if vfXArray and vfYArray haveNULL
values in the VectorField object. It is forced toIrregular
if vfXArray and/or vfYArray contain 1D coordinate arrays. If vfXArray and vfYArray contain 2D coordinate arrays, trGridType defaults toSpherical
but the user can choose to set it toCurvilinear
.
LogLinTransformation resources
The StreamlinePlot class uses the LogLinTransformation to handle its transformations as long as neither of the VectorField array resources, vfXArray or vfYArray, is set. LogLinTransformation has resources for selecting between linear and logarithmic coordinates for each axis.You can access all LogLinTransformation resources. However, note that StreamlinePlot intercepts LogLinTransformation resources, as follows:
-
- trXLog
- StreamlinePlot issues a warning if trXLog
is set True when the set value of trXMinF is less than or
equal to 0.0. In this case it resets trXLog to False. If the
IrregularTransformation resource trXAxisType
is set, StreamlinePlot sets trXLog True if
trXAxisType is set to
LogAxis
. If trXAxisType is set to any other value, it sets trXLog False.
-
- trYLog
- StreamlinePlot issues a warning if trYLog
is set True when the set value of trYMinF is less than or
equal to 0.0. In this case it resets trYLog to False. If the
IrregularTransformation resource trYAxisType
is set, StreamlinePlot sets trYLog True if
trYAxisType is set to
LogAxis
. If trYAxisType is set to any other value, it sets trYLog False.
IrregularTransformation resources
StreamlinePlot automatically uses the IrregularTransformation to handle its transformations if either of the VectorField array resources vfXArray and/or vfYArray are set with one-dimensional arrays, implying that one or both of the coordinate axes is irregularly spaced.All Transformation superclass resources are accessible. However, StreamlinePlot blocks access to all resources specific to the IrregularTransformation except for:
In addition, StreamlinePlot intercepts these IrregularTransformation resources:-
- trXAxisType
- If the VectorField resource vfXArray is
non-
NULL
and trXAxisType is set to any other value thanIrregularAxis
, StreamlinePlot switches to a coordinate extent bounded by 0 and the length of the X-Axis dimension minus one. If trXAxisType is not set, but the LogLinTransformation resource trXLog is set, StreamlinePlot sets trXAxisType toLogAxis
if trXLog is True; if trXLog is False, it changes trXAxisType toLinearAxis
if it had been set toLogAxis
and leaves it unchanged otherwise. trXAxisType can be set toLogAxis
without error only when the X-Axis coordinate extent as passed from the VectorField is entirely positive. If this is not the case, trXAxisType will default toLinearAxis
.
-
- trYAxisType
- If the VectorField resource vfYArray is non-
NULL
and trYAxisType is set to any other value thanIrregularAxis
, StreamlinePlot switches to a coordinate extent bounded by 0 and the length of the Y-Axis dimension minus one. If trYAxisType is not set, but the LogLinTransformation resource trYLog is set, StreamlinePlot sets trYAxisType toLogAxis
if trYLog is True; if trYLog is False, it changes trYAxisType toLinearAxis
if it had been set toLogAxis
and leaves it unchanged otherwise. trYAxisType can be set toLogAxis
without error only when the Y-Axis coordinate extent as passed from the VectorField is entirely positive. If this is not the case, trYAxisType will default toLinearAxis
.
CurvilinearTransformation resources
StreamlinePlot uses the CurvilinearTransformation to handle its transformations if the VectorField array resources vfXArray and vfYArray are set with two-dimensional arrays and the Transformation class resource trGridType is set toCurvilinear
. The
CurvilinearTransformation class has no
user-accessible resources.
SphericalTransformation resources
StreamlinePlot uses the SphericalTransformation to handle its transformations if the VectorField array resources vfXArray and vfYArray are set with two-dimensional arrays and the Transformation class resource trGridType is set toSpherical
.. The
SphericalTransformation class has no
user-accessible resources.
PlotManager resources
If tfPlotManagerOn is True when a StreamlinePlot object is created, you can access all PlotManager resources. However, note that StreamlinePlot intercepts certain PlotManager resources, as follows:-
- pmLabelBarDisplayMode
- The default value of pmLabelBarDisplayMode is set to
Never
.
-
- pmLegendDisplayMode
- The pmLegendDisplayMode resource is hard-coded to its default value of NhlNOCREATE in StreamlinePlot.
-
- pmTickMarkDisplayMode
- The default value of pmTickMarkDisplayMode is set to
Conditional
.
-
- pmTitleDisplayMode
- The default value of pmTitleDisplayMode is set to
Conditional
.
- TickMark resources as modified by PlotManager
- Title resources as modified by PlotManager
- LabelBar resources as modified by PlotManager
Additional modifications to LabelBar resources
The StreamlinePlot class disables a number of LabelBar resources, since it sets them automatically based on the current values of certain relevant StreamlinePlot resources. The disabled resources include:- lbBoxCount
- lbMonoFillColor
- lbFillColor
- lbFillColors
- lbMonoFillPattern
- lbFillPattern
- lbFillPatterns
- lbMonoFillScale
- lbFillScaleF
- lbFillScales
-
- lbLabelStrings
- Any set value of this resource is ignored unless the StreamlinePlot resource stExplicitLabelBarLabelsOn is set True.
-
- lbLabelFuncCode
- Any set value of this resource is ignored unless the StreamlinePlot resource stExplicitLabelBarLabelsOn is set True.
-
- lbLabelAlignment
- Any set value of this resource is ignored unless the StreamlinePlot resource stExplicitLabelBarLabelsOn is set True.
Superclass resources
You can set all resources defined by the superclasses of the StreamlinePlot object class, including:
Description
A StreamlinePlot object, or streamlineplot, represents a vector field using streamlines, based on two-dimensional data provided by an instance of the VectorField class. The streamlines may be progressively colored based upon the interpolated magnitude or other associated scalar value at each step-wise location of the streamline. It supports title, tick mark, and labelbar annotations that automatically adjust themselves to the state of the streamlineplot.The StreamlinePlot class provides a number of resources that you can use to influence the way the streamlines are generated and displayed.
Data input
The only resource you must set in order to generate a streamlineplot is stVectorFieldData. This resource specifies the id of an existing VectorField object. The vectorfield accepts data in a variety of types and configurations, and allows you to specify how it is to be interpreted. As received by the streamlineplot, the data are accompanied by information specifying the extents of the data in the data coordinate system, the minimum and maximum data magnitudes, as well as the minimum and maximum values of each component of the vector. Also, if either or both of the data coordinate axes is irregularly spaced, the vectorfield communicates information defining this spacing.
If you want to color the streamlines based on data other than the vector magnitudes, you must set the boolean resource stUseScalarArray True and also supply the streamlineplot with a ScalarField object. You do this by setting the resource stScalarFieldData using the id of an existing scalarfield. Currently, StreamlinePlot requires that the scalarfield have the same number of elements along each dimension (after subsetting and striding is performed) as does each component of the vectorfield. It also assumes that the data coordinate extents of the scalarfield match those of the vectorfield and ignores any explicitly set scalarfield coordinate extent values.
Coordinate transformations
StreamlinePlot intrinsically supports linear, logarithmic, and irregular rectangular gridded data coordinate spaces. It does not yet, on its own, support the transformation of an irregular data space into either a linear or a logarithmic space. However, such transformations are easily accomplished using the overlay mechanism.
StreamlinePlot also supports topologically rectangular grids defined using 2D coordinate arrays.
StreamlinePlot instantiates child objects to manage transformations between the data coordinate system and NDC space. The LogLinTransformation manages linear and logarithmic transformations, and the IrregularTransformation manages the transformation if one or both axes are irregularly spaced. If the grid is defined using 2D coordinate arrays, StreamlinePlot instantiates either the CurvilinearTransformation or the SphericalTransformation to handle the transformations.
By default the data coordinate extents are based on the extents of the supplied VectorField object data, but you may adjust them using resources belonging to the transformation objects.
Use of the LogLinTransformation object
StreamlinePlot uses a LogLinTransformation object as long as the VectorField resources vfXArray and vfYArray are bothNULL
. The coordinate extents of a linear axis may
arbitrarily intersect or encompass the data extent. If you set a
logarithmic axis, then the coordinate extent of that axis must be
entirely positive, but otherwise may intersect or extend beyond the
data extent.
Use of the IrregularTransformation object
If either of the VectorField coordinate array resources vfXArray and vfYArray are non-NULL
and they are not set with 2D arrays, then
StreamlinePlot uses an
IrregularTransformation object. Note that
StreamlinePlot treats an axis with an associated
coordinate array as irregular even if the coordinate array actually
has evenly spaced values. StreamlinePlot represents
an irregular axis not by stretching and compressing various regions of
the plot, but by displaying it with irregularly spaced tick marks.
In addition to a small performance penalty, there are some
restrictions associated with use of the
IrregularTransformation object. Although you may
limit the coordinate extent to a subspace of the data coordinate
extent of the VectorField object data, you are not
allowed to define a coordinate range that extends outside the range of
the data coordinates of an irregular axis. Using the
IrregularTransformation resources trXAxisType or
trYAxisType,
it is possible to set an irregular axis to LinearAxis
or
even, under certain conditions, to LogAxis
, but the
results are probably not what you want. Since
StreamlinePlot does not intrinsically support a
linearization transformation for irregularly spaced data, it can only
switch to a linear system by replacing the data coordinates with array
index coordinates, which are, in fact, linearly spaced. To properly
transform irregularly spaced data into a linear or logarithmic
coordinate system, you must use the overlay mechanism (V4.1 Status Note 1).
Use of the CurvilinearTransformation object
If both the VectorField coordinate array resources vfXArray and vfYArray are set using 2D coordinate arrays and the Transformation class resource trGridType is set toCurvilinear
StreamlinePlot
uses a CurvilinearTransformation object. As with the
IrregularTransformation you cannot set the coordinate
range outside, the range of the data. Also, since X and Y coordinate
locations both vary along the grid edges, tickmarks are disabled. In
order to place the the data in context, you need to overlay the
streamlineplot on another plot such as a
mapplot.
Use of the SphericalTransformation object
If both the VectorField coordinate array resources vfXArray and vfYArray are set using 2D coordinate arrays and the Transformation class resource trGridType is set toSpherical
StreamlinePlot uses a
CurvilinearTransformation object. As with the
IrregularTransformation you cannot set the
coordinate range outside the range of the data. Also, since X and Y
coordinate locations both vary along the grid edges, tickmarks are
disabled. In order to place the the data in context, you need to
overlay the streamlineplot on another plot such as a
mapplot.
Overlays
In addition to the built-in transformation support, you can map a streamlineplot into a variety of other coordinate spaces by adding it as an overlay to a base plot. You can overlay a streamlineplot on a mapplot to transform the data into any of 10 different map projections. You can transform irregularly gridded vector data into a linear or logarithmic space by overlaying the streamlineplot on a loglinplot. You can also make a streamlineplot into an overlay of any other plot object, including a contourplot, an irregularplot, a vectorplot, or an xyplot. Use the NhlAddOverlay function to perform an overlay.
Mapping the vector direction
In certain situations, such as when the coordinate system is irregular or when the units along each coordinate axis are different, you may want to draw streamlines within a coordinate space but without transforming the directional components relative to the space. StreamlinePlot has a boolean resource called stMapDirection that allows you to specify whether the direction as well as the location is to be mapped into the coordinate space defined by the transformation currently in effect. When you set this resource to False, the direction is rendered in a uniform coordinate system. The U component of the vector data will be parallel to the X Axis, and the V component will be parallel to the Y Axis with units of equal size in each direction.
Draw order
The StreamlinePlot class allows you specify when the streamlines are drawn in relation to other plot elements of an overlay. You control the drawing order using the stStreamlineDrawOrder resource. There are three drawing phases: the predraw phase, the draw phase, and the postdraw phase. By default, the StreamlinePlot object draws its streamlines during the draw phase. When a streamlineplot is drawn by itself, the drawing order is not important. However, when a streamlineplot is an overlay, you often need to adjust the drawing order to ensure that the features you want to see remain visible.
Annotations
Like all plot objects, a streamlineplot is by default instantiated with a plotmanager to manage overlays and annotations on its behalf. StreamlinePlot enables three PlotManager intrinsic annotations, and also supplies a zero field message label of its own. The enabled PlotManager annotations include TickMark, Title, and LabelBar. StreamlinePlot displays tick marks by default. Titles will appear if you set the appropriate title string resource to a non-NULL string value. The LabelBar, which provides a key to the color scheme used for progressively colored streamlines, only appears if you set pmLabelBarDisplayMode appropriately. As with any plot object, you can also add arbitrary user-defined external annotations to a streamlineplot.
Streamline generation resources
StreamlinePlot supplies several resources that influence the way it generates streamlines. The most important of these are stStepSizeF, stLineStartStride, and stMinDistanceF, and stMinLineSpacingF.
stStepSizeF specifies the basic step size (in NDC units) that StreamlinePlot uses to calculate the next point on the streamline. Although StreamlinePlot can usually be counted on to come up with a reasonable value for the step size based on the viewport and the size of the data grid, and although it performs some adaptive step sizing based on the field topology, you will find, in general, that setting a smaller step size will result in a more accurate plot. The drawback is that the streamlines will take a bit longer to generate.
The resources stLineStartStride and stMinDistanceF offer alternate ways to limit the number of streamlines started in order to control streamline density. Streamlines always begin at the center of a 'grid box', that is, at a point in data space located equally distant from four points on the grid where vector data values are defined. As a streamline is generated the grid boxes through which it passes are marked as ineligible for starting a new streamline. The stLineStartStride resource sets a stride value that determines which grid boxes are initially eligible for starting a streamline. For instance, when stLineStartStride is set to its default value of 2, only every other grid box (along each data dimension) will be initially eligible.
stLineStartStride works well for controlling density when the transformation from data space to NDC space is linear. However, when the transformation is non-linear, as with many map projections, a more uniform and legible plot may be achieved with the stMinDistanceF resource. This resource specifies a minimum distance in NDC space that must separate neighboring grid boxes for both to be initially eligible for starting a streamline. When this resource is set to a value greater than 0.0, StreamlinePlot calculates the NDC location of each grid point, and then based on the minimum distance value records the initially eligible grid boxes.
stMinLineSpacingF specifies how close in NDC space streamlines are allowed to approach each other before being terminated. StreamlinePlot dynamically calculates a default value for this resource, again based on the viewport size and the number of elements in the data grid. As the value of this resource increases, the streamlines gradually disintegrate into a series of short disconnected lines. Smaller values result in a denser plot with fewer separate lines.
Directional arrow resources
You can set the length of the lines used to draw each directional arrow using the resource stArrowLengthF.
You can control the directional arrow spacing in two different ways. The resource stArrowStride works in a similar manner to stLineStartStride. It specifies which data grid boxes are eligible for a directional arrow. For example, when stArrowStride has its default value, 2, every second grid box (along each dimension) is eligible for a directional arrow.
The stArrowStride resource works well unless a non-linear transformation is in effect. In such cases, as for instance in many map transformations, the arrows may be reasonably spaced in the lower latitudes, but become unacceptably crowded near the poles. The resource stMinArrowSpacingF was designed to help solve this problem. It allows a directional arrow to be drawn only if at least the NDC distance specified by its value has been added to the streamline since the previous directional arrow.
Streamline color
If stMonoLineColor
is set True
, you control the color used to render
the streamlines by setting the resource stLineColor.
If you set stMonoLineColor False
StreamlinePlot draws each streamline with multiple
colors, based on the interpolated magnitude or other associated scalar
value at each step-wise location of the streamline. The array resource stLevelColors
specifies the color indexes to use for multi-colored rendering.
Selecting levels
In order to support multi-colored streamlines, StreamlinePlot uses an array of level values to subdivide the range of scalars on which the coloring is based. By default, the levels apply to the range of vector magnitudes. However, if stUseScalarArray is set True and a scalarfield has been provided, the levels will apply to the range of the scalarfield data. The level array resource stLevels is specified in the same way as the ContourPlot resource cnLevels.By appropriately setting the stLevelSelectionMode resource, you can
choose from four level selection modes to set up the stLevels array. The default mode,
AutomaticLevels
, is easy to use. It selects a "nice"
spacing starting from the smallest relatively round number greater
than the minimum data value, such that the number of levels is as
close as possible to, but less than, the value of the resource stMaxLevelCount.
EqualSpacedLevels
mode defines exactly stMaxLevelCount levels spaced
evenly from the data minimum value to the data maximum value. In
ManualLevels
mode, you set the maximum and minimum levels
using the resources stMinLevelValF and stMaxLevelValF with a spacing
defined by the resource stLevelSpacingF. Finally,
Explicit
mode allows you to define the level values
yourself by setting the array resource stLevels. The
ManualLevels
and ExplicitLevels
modes have
the advantage that they are independent of the maximum and minimum
values of the particular dataset you are plotting, and therefore can
be used to enforce consistency in the plots of a series of related
datasets. ExplicitLevels
is the only mode that allows you
to establish variably spaced levels.
Once you have established the levels, you can retrieve the number of levels actually used by getting the value of the read-only resource stLevelCount.
Streamline line width
You can set the thickness of the streamlines using stLineThicknessF. Setting the streamline thickness also affects the thickness of the lines used to draw the directional arrows.
Zero field annotation
StreamlinePlot provides a zero field annotation that outputs a diagnostic message if you attempt to draw an instance using a vectorfield that contains only zero magnitude vectors or missing values. This annotation also outputs a message if you draw without setting the stVectorFieldData resource to the id of an existing vectorfield. You can individually control the contents of each of these messages as well as whether they should appear at all. The applicable resources are:
for controlling the zero field message, and for the no data message.All the remaining resources for the zero field annotation have the prefix stZeroFLabel. These include a complete set of text attribute resources, as well as resources for controlling position according to the locational conventions of the PlotManager Location Control Model.
Status
1. The support for irregular transformations is at a transitional stage. Eventually, StreamlinePlot will be able to perform transformations from irregular coordinates to linear and logarithmic coordinates without using the overlay mechanism. This will eliminate the need for a switch to the index coordinate system.
See also
- NhlCreate function
- NhlDestroy function
- NhlSetValues function
- NhlGetValues function
- NhlAddData function
- VectorField object
- PlotManager object
- Title object
- TickMark object
- DataComm object
- Transform object
- View object
- Base object