PLOT

From ICE Enterprises
Jump to navigation Jump to search

Generic plotter for Midas files (or shared Layer objects)

<file> - File(s) to plot (file1|file2|... for multiple)

Keyword Only Parameters:  NOTE: These cannot be abbreviated. These keys are also
    available with the SET/GET messages and/or the set/get methods.

[AUTOL]       - autoscale length (in frames) (See [SCALE]) [DEF=8]
                Supported by Layer1D, Layer2D, and LayerXY. Cannot be zero.
[AUTOM]       - mask of layers to include in autoscaling, -1 for all.  [DEF=2]
[AXIS]        - axis mode = DEF,UNLAB,NUM,FRAME,TFrame,BFrame,TRFrame,BRFrame,
                            TLFrame,BLFrame,~Grid,~Show,Modify,~Gridfront,
                            ~RotateVals,~AutoRotate
[BUTTONACTION] - Table to control what happens when a mouse button is pressed
                 (Since 3.5.2)
                 The table should be in the form:
                    {LMB=<act>,MMB=<act>,RMB=<act>}
                 Where <act> is one of the following:
                    Default            - default action for button
                    None               - do nothing
                    Menu               - bring up menu (default for MMB)
                    Mark/Mark__Message - mark this location (default for LMB)
                    UnZoom             - zoom out (default for RMB)
[C1,C2,CD]    - set color min, max, and/or delta (Not Implemented)
[CM]          - complex mode = Mag,Phase,Real,Imag,RnI,RvI,10Log,20Log,X,Y,Z
[CMAP]        - (Layer2D, Layer1D for type 2000) Use predefined Color map =
                  GrayScale,Ramp,XRamp,Wheel,Terrain,Multi,T5Layer,MapLine,Grid,
                  Spectrum,XDatalist. [DEF=based on input file]
                See MColor.colorMapList for full list. See also [NC] parameter.
[CNT]         - controls mode = Click|Motion|Drag|NONE [DEF=Click]
                Sets the mouse interaction messages to send to the macro.
[DRANGEUNITS] - Units to use for the dRange [READOUT] display value. (M,KM,NMI)
[FEATURES]    - table of features to set on plot class
[FILE]        - Input files (FILE1|FILE2...)
[LAYER]       - table of default parameters for all layers. This can be used
                to  persist things like colormaps from one file to the next.
                Use {TAG=mytagname} to change the layer name, otherwise the
                root file name is used.
[MAXRANGE]    - sets the maximum autoscale range (usually Y values) [DEF=100]
[MINRANGE]    - sets the minimum autoscale range (usually Y values) [DEF=50]
[MIMIC]       - sets the IDs of the plotters that any PAN/ZOOM messages should
                be forwarded to such that they will mimic this PLOT and
                PAN/ZOOM along with any changes to this plot; note that if
                bi-directional behavior is desired both plots need to be
                passed MIMIC= that point to the other; it is OK if the other
                PLOT has not been defined yet as the ID is not used until the
                first message is sent (Since NeXtMidas 3.5.4)
[NC]          - (Layer2D, Layer1D for type 2000) Number of colors to use for
                [CMAP] parameter [DEF=32].
[OPTIONS]     - MPlot options (BStore|Axes|Mark|Contrast|CrossHairs|XCut|YCut|
                               ZCut|StillZoom|BlockZoom|Pager|All|Auto2D|
                               DBuffer|NearInt|DragZoom)
[RANGE]       - sets the autoscale (max) range for the plot (and the range below
                automax mode). Same as setting both SCALE=+MaxRange and
                MAXRANGE=[value of RANGE]
[READOUT]     - specs readout, use | as separator, i.e. READOUT=Show|onTitle
                ( Show|onStatus|onAxis|onTitle|
                  X|dX|1/X|iX|Y|dY|dY/dX|iY|Z|dZ|dZ/dX|iZ|T|dT|1/T|1/dT|dRange|
                  extPrec|Index|DMS|Units|View|DateString|Scientific|Azimuth)
                (Macro mode default=Show|onStatus|onTitle|X|dX|Y|dY|dRange|
                View|Scientific; Interactive mode default +onAxis)
[SCALE]       - autoscale= AutoMin|AutoMax|MinRange|MaxRange|
                           MinZRange|MaxZRange|NoAverage|ExpandOnly
                  NOTE: Autoscaling uses the min/max exponential (sliding)
                        averages of [AUTOL] frames in the [AUTOM] layer(s),
                        unless NoAverage (Since 3.3.3) is set, then it will use
                        the actual min/max over [AUTOL] frames.
                        For TYPE=LINE:   min sets y1, max sets y2 (y-axis)
                        For TYPE=RASTER: min sets z1, max sets z2 (color range)
                  AutoMin   - autoscale the min
                  AutoMax   - autoscale the max
                  MinRange  - bound autoscale of max within a range of
                                (min + [MINRANGE])
                  MinRange  - bound autoscale of min within a range of
                                (max - [MAXRANGE])
                  MinRange|MaxRange - bound autoscale of min within a range of
                                1. (max - [MAXRANGE]), then to a range of
                                2. (max - [MINRANGE])
                  ExpandOnly - only expand min/max (no shrink) (Since 3.4.2)
[SETUP]       - table of configuration parameters to be applied to the plot
[TYPE]        - set plot mode = LINE,RASTER,CONTOUR,MESH,POINT,DOT
[VIEW]        - Change the plot view/layout, such as axis direction, etc.
                e.g. YX swaps X and Y axes; XiY reverses direction of Y axis.
                Options: XY,iXY,XiY,iXiY,YX,iYX,YiX,iYiX,
                         XYZ,Polar,LatLon,Mercator,Geodetic
[X1,X2,XD,XU] - set X min, max, delta, and/or units
[Y1,Y2,YD,YU] - set Y min, max, delta, and/or units
[Z1,Z2,ZD,ZU] - set Z min, max, delta, and/or units
[ZOOMTO]      - open the plot zoomed to a particular portion of the plot. E.g:
                 nM> plot apenny.prm ZOOMTO={x1=50,x2=100,y1=0,y2=100}

This routine plots multiple files or layers in both static and real-time modes.
A file/pipe will have its I/O handled by this routine. A layer must provide its
own I/O and tell this routine when to update. The following is a short list of
*some* of the layers supported (see the LAYER explain file for details):

    1000  - a type 1000 file
    2000  - a type 2000 x/y grid
    3000  - a non-homogeneous file with subrecords specified by
            qualifiers in the form {Layer={LT=XY,X=ABSC,Y=ORD}}.
    5000  - a type 5000 file with a vector component of interest
            qualifier {NAME=XXX} specifies component other than all
    1998  - a polygon file specifying 2 or 3 dimensions (filled)
    1999  - a line segment file specifying 2 or 3 dimensions


    - Plot supports markers and annotations. - See FEATURE.
    - Plot supports non-file based layers    - See LAYER.
    - Plot supports SHAPE (.shp) files.      - See the examples below.
    - Plot supports NGA image files.         - See the MAP option tree.
    - Plot supports IMAGE (gif,tif,jpg,png,xpm,pdf) files.

Scaling:
  Plot autoscaling can be set or adjusted in many ways:
    0. Autoscaling of the min and max is on by default.
    1. If a user specifies an X, Y or Z minimum value on the plot command line,
       then the plot will not automatically scale minimum values.
    2. Likewise, setting a max value will turn off autoscaling of max values.
    3. Setting the range on the command line (via the "RANGE"=<range> parameter)
       will set the scale to include scaling by Max data range values.
    4. A user can set the autoscale options on the plot command line using the
       "SCALE=<scale>" parameter.
    5. Scaling can be done on an active plot by using the Scale menu described
       in the Menus section below.
    6. Also on an active plot, users can invoke either the setScale(String) or
       the setScale(int) methods.
       a. The setScale(int) method accepts values or groups of int values
          corresponding to the items listed in [SCALE], above.
       b. The method setScale(String) takes in String forms of those values and
          includes, for convenience, several common group designations.
          These group designations are:
            "FIX"   : De-selects autoscaling (uses current range)
            "FULL"  : Sets to "AUTOMIN|AUTOMAX"
            "AUTO"  : Same as "FULL" (Sets to "AUTOMIN|AUTOMAX")
            "RANGE" : Sets to "MINRANGE|MAXRANGE".
          As with many methods that relates to setting mask values, users can
          use the word "NONE" to de-select all current values.

Menus:
  Plot menus may be accessed by using the middle-mouse button (MMB). An MMB can
  be simulated on a two-button mouse by briefly holding down the right-mouse
  button. Menu selections made with the left-mouse button (LMB) and are not
  "sticky" (the menu goes away after selection). Menu selections made using the
  MMB are sticky.  The following is a summary of the options available through
  plot menus:

    Files       -> Addnew / Reread / [plot file #1,...]
    Layers      -> [same as Legend]
    Features    -> Load / Save / AddNew
    View        -> YX / iYX / YiX / iYiX / XY / iXY / XiY / iXiY / XYZ /
                     Polar / LatLon / Mercator / Geodetic
    Mode        -> Mag / Phase / Real / Imag / RnI / RvI / 10Log / 20Log
    Scale       -> Flags: AutoMin,AutoMax,MinRange,MaxRange,MinZRange,MaxZRange,
                          NoAverage
                   / XMin / YMin / ZMin / MinRange / ScaleAvg / XMax / YMax /
                   ZMax / MaxRange
    Axis        -> Default / Unlabeled / Numbered / Frame / TFrame / BFrame /
                     TRFrame / BRFrame / TLFrame / ~Grid / ~Show / Modify /
                     ~Gridfront / ~RotateVals / ~AutoRotate
    Readout     -> Show / onStatus / onAxis / onTitle / X / dX / 1/X / iX / Y /
                     dY /dY/dX / iY / Z / dZ / dZ/dX / iZ / T / dT / 1/T / 1/dT/
                     dRange / ExtPrec / Index / DMS / Units / View /
                     DateString / Scientific / Azimuth / dRangeUnits>
    dRangeUnits -> M / KM / NMI
    Legend      -> [display options for each layer...]
    Options     -> BStore / Axes / Mark / Contrast / CrossHairs / XCut / YCut /
                     ZCut / StillZoom / BlockZoom / Pager / All / Auto2D /
                     DBuffer / NearInt / DragZoom
    Query       -> [PLOT status information]
    Export      -> [ExportImage parameters and options]
    More        -> Window / Controls / Animate / Theme / Precision / Type /
                     ~Dots / Locate / GoToLocation
    Exit

  Menu options presented with a tilde (~) in front are toggle options.  For
  example, the menu selection Plot -> Axis -> ~Show toggles view of the X and Y
  axes.

  Menu options followed by a greater than (>) lead to further options, such as
  popup menus. For example, the Readout selection dRangeUnits> pops up a menu
  asking the user to select the unit type (M, KM, or NMI).

Plot Mode Options:
  NeXtMidas plots support the rendering of data several ways. Typically, the
  data values are treated as REAL numbers and plotted as such. Users are able
  to change the data representation on the command line using the cm=<mode>
  argument or via the Menus as depicted above.

  Note: not all data can be rendered in all modes, or the rendering change may
  have no effect.

Axis Menu Options:
  Default       - The default axis layout. Includes Axis lines and labeled tics
  Unlabeled     - The axis does not includes labels
  Numbered      - Axis has numbers and tics
  Frame         - Axis has tics only
  TFrame        - Show axis values at top
  BFrame        - Show axis values at bottom
  TRFrame       - Show axis values at top and right
  BRFrame       - Show axis values at bottom and right
  TLFrame       - Show axis values at top and left
  ~Grid         - Toggle showing grid
  ~Show         - Toggle showing axis
  Modify        - Brings up axis configure menu
  ~GridFront    - Place grid in front of data
  ~RotateVals   - Draw vertically the labels on the Y axis (since 3.1.0)
  ~AutoRotate   - Rotate if necessary labels on the Y axis (since 3.1.0)

Options:
  BStore     - Put drawn data or features into a backing store for faster
               refreshes. Not recommended for moving features or realtime
               (piped) data.
  Axes       - Show axes
  Mark       - Show marks
  Contrast   - Adjust contrast (slightly darkens plot)
  CrossHairs - Display cross hairs at the mouse location
  XCut       - Creates a "cut" of the X-Axis cross-section at the mouse position
  YCut       - Creates a "cut" of the Y-Axis cross-section at the mouse position
  ZCut       - TBD
  StillZoom  - Use still zoom
  BlockZoom  - Use block zoom
  Pager      - Use pager
  All        - Use all available data
  Auto2D     - Auto Geodetic To Mercator for speed where appropriate
  DBuffer    - Simulate Double BUffering (helps eliminate flicker)
  NearInt    - Use nearest integral scaling
  DragZoom   - Allow zooming by RMB dragging top-right corner of plot

Messages:
  NAME       - (IN/OUT) DESCRIPTION
  -----------------------------------------------------------------------
  BUTTON       - (IN)  (Internal Message:) Mouse click.
  CLOSEFILE    - (IN)  Close a layer/file. Data=<TAG name>
  CONTROLS     - (IN)  Set the controls mask: ONCLICK, ONMOTION.
                       INFO=<controls mask>
  DBLCLICKZOOM - (IN)  Disable or enable zooming in/out through the use of
                       double-clicking the mouse.        (Since NeXtMidas 2.7.2)
                       DATA=TRUE,FALSE
                        NOTE: When enabled, this can cause confusion if Left
                              Mouse Clicks or Right Mouse Clicks are already
                              mapped by the user's application.
  DRAG         - (IN)  (Internal Message:) Mouse drag.
  DRAGBOX      - (OUT) Indicates user has drawn a dragbox (a Shift+Drag).
                       (e.g. macro test %test_box)
  DROPDATA     - (OUT) Indicates user has executed a drag and drop.
  DRANGEUNITS  - (IN)  Sets the dRange Units
  EXIT         - (IN)  Exit plot (if EXIT_MESSAGE enabled)
  EXPORTIMAGE  - (IN)  Creates and saves the image. INPUT DATA=<FileName>.<ext>
                       Image type is based on file extension.
  FEATURE      - (??)  TBE
  FOCUS        - (IN)  No action taken if plot receives this message.
  GOTOLOCATION - (IN)  Marks or Zooms to a given location. Message data is a
                       table with:
                          XVAL   - X coordinate (or center point)
                          YVAL   - Y coordinate (or center point)
                          RADIUS - Zoom radius (same units as plot)
                          FLAGS  - Type of action (|MarkLocation|Zoom|)
  HOLDREFRESH  - (IN)  Prevent refreshes, allowing the user to make many changes
                       before allowing refreshes again, thus drawing all
                       changes at once. DATA=<what to hold>
                         DATA=NONE (Allow all refreshes) [DEF]
                         DATA=[~,+,-]FEATURE (Hold refreshes on Features only)
                         DATA=[~,+,-]LAYER (Hold Layer refreshes)
                         DATA=ALL (Hold Feature AND Layer refreshes)
  KEYPRESS     - (IN)  (Internal Message:) Keyboard interaction.
  KEYRELEASE   - (IN)  (Internal Message:) Keyboard interaction.
  LAYER        - (IN)  (Internal Message:) Brings up the layer configuration
                       menu. DATA=[LayerName]
  LOADFEATURESFROMFILE - (IN)  Loads features from a file.
  MARK         - (OUT) Indicates current pointer position. [CNT] controls when
                       MARK message will be sent. INFO=[0=Motion,1=Click/Drag]
  MENU         - (IN)  (Internal Message:) Brings up the plot menu.
  MODIFY       - (OUT) (Internal Message:) Used with RMIF connections.
  MORE         - (IN)  (Internal Message:) Brings up the more menu.
  MOUSEWHEELZOOM - (IN) Disable or Enable zooming in/out through the use of the
                        mouse scroll wheel.              (Since NeXtMidas 2.7.2)
                        DATA=TRUE,FALSE
  NOFILE       - (IN)  (Not Implemented)
  OPENFILE     - (IN)  Open a layer/file. DATA=<filename>. Unlike REREAD
                       message this processes the file header information. If
                       info=-1, clears old files first. To set additional
                       arguments or to update the viewable area of the plot
                       when opening, use the optional message field
                       QUALS=<table>. See the example for using QUALS with
                       OPENFILE in EXAMPLES for more details.
  PANOBS       - (IN)  Pan the observer position.
  PANX         - (IN)  Pan in X dimension only.
  PANXY        - (IN)  Pan in both X and Y  dimensions.
  PANY         - (IN)  Pan in Y dimension only.
  PANTW        - (IN)  Pan to specified time window (start,len)
  PLOT         - (??)  TBE
  POINTER      - (IN)  Set the current pointer position.
  PRECISION    - (IN)  Set the readout precision (# places after decimal).
  REFRESH      - (IN)  Perform a FULL refresh (Drawable.FULL)
  REPARENT     - (IN)  MPLOT.reParent is invoked with data
  REREAD       - (IN)  REREAD the file, does not reread the header
  RESIZE       - (IN)  (Internal Message:) Resizes plot.
  SAVEFEATURESTOFILE - (IN)  Saves features to a file.
  SHOW         - (IN)  (Internal Message:) Shows or hides the plot.
                       INFO=[1=Show,0=Hide,-1=Iconify]
  SHOWN        - (IN)  (Internal Message:) Sets plot visibility status.
  THEME        - (IN)  Change the THEME ("MORE -> Theme" menu)
                       Data=Desktop,Default,WoB,GoB,BoW,Browser,Gear1,Gear2,
                            Gear3,Gear4,Nak.
  TIME         - (IN)  Set the time for animated displays. Same as using
                       MPLOT.setTime(String) method.
  TYPE         - (IN)  Set Type as per [TYPE] above
  UNZOOM       - (I/O) Unzoom back one zoom level.
                       Output Data=nxm.sys.libg.DragBox (as of NeXtMidas 2.5.0)
  WINDOW       - (IN)  (Internal Message:) Sets window status.
  XCUT         - (IN)  Create a cut of the X-Axis cross-section
                       DATA={IX=<xpos>,IY=<ypos>}
  YCUT         - (IN)  Create a cut of the Y-Axis cross-section
                       DATA={IX=<xpos>,IY=<ypos>}
  ZOOM         - (I/O) Zoom one level to the X1,X2,Y1,Y2 real world coordinates.
                       INPUT DATA={X1=<x1>,X2=<x2>,Y1=<y1>,Y2=<y2>} or
                                 ={XMIN=<x1>,XMAX=<x2>,YMIN=<y1>,YMAX=<y2> or
                                 =nxm.sys.libg.DragBox
                       OUTPUT DATA=<same as input data> (macro initiated) or
                                  =nxm.sys.libg.DragBox (user initiated)
  ZOOMIN       - (I/O) Zoom in on a plot by a given percentage (0 < % < 1)
                         INPUT DATA=<float> [DEF=0.5f], QUALS={PERCENT=<float>}
                           Examples:
                             DATA=0.1 (Zoom in 10%)
                             DATA=0.9 (Zoom in 90%)
                             DATA=0.5 (Zoom in 50%) [DEF]
                         OUTPUT DATA={XMIN=<x1>,XMAX=<x2>,YMIN=<y1>,YMAX=<y2>}
                                QUALS={PERCENT=0.5}
  ZOOMOUT      - (I/O) Zoom out on a plot by a given percentage (0 < % < 1) or
                       all the way out (-1)
                         INPUT DATA=<float> [DEF=0.5f], QUALS={PERCENT=<float>}
                           Examples:
                             DATA=0.1 (Zoom out 10%)
                             DATA=0.9 (Zoom out 90%)
                             DATA=0.5 (Zoom out 50%) [DEF]
                             DATA=-1  (Zoom all the way out)
                         OUTPUT DATA={XMIN=<x1>,XMAX=<x2>,YMIN=<y1>,YMAX=<y2>}
                                QUALS={PERCENT=0.5}
  ZOOMX        - (I/O) Same as ZOOM for X only
  ZOOMY        - (I/O) Same as ZOOM for Y only

  NOTE 1: Some messages only support passing because a way to implement
          their data portion has not yet been implemented.

  NOTE 2: There is an inherent delay when using the message command with the
          function SEND, since the message is put onto the plot message queue
          and waits there for plot to retrieve it. Therefore, the user should
          not update any values on the plot until the plot has had time to
          process the message. An alternative is to use SENDW or SENDX. See
          Message explain file for details on their use.

  NOTE 3: Messages are intended to be processed and executed by the PLOT thread,
          although it is possible to call plot.processMessage directly via an
          INVOKE or through Swing EDT interaction (such as mouse interaction).
          Since 3.1.1, PLOT will re-queue most messages that are not on the
          PLOT thread in order to avoid possible thread collision issues. For
          performance reasons, the PAINT, POINTER, and DRAG messages are
          excluded from this behavior.

  NOTE 4: The original MouseEvent, generated by a user interacting with the Plot,
          is saved in a table in the "quals" field of the Plot Message under the 
          key ORIG_MSG_DATA. (Since 3.5.4)

Examples:
  1. Axis and grid options:

    Plot a Layer2D file with a grid in the background using a 3-D view.
       nM> plot alaska.prm axis=grid view=xyz

    Plot a Layer2D file with a grid in the foreground using a 3-D view.
       nM> plot alaska.prm axis=grid|gridfront view=xyz

    Toggle the appearance of the axis (turn it off).
       nM> plot fftdemo.prm axis=show

    Rotate the Y axis labels (draw the text vertically)
       nM> plot fftdemo.prm axis=+rotateVals

    Disable the buffer that is added to axis values
       nM> plot/axisBuffer=0 fftdemo.prm

    Increase the size of the axis buffer
       nM plot/axisBuffer=12 fftdemo.prm

  2. Change the default color attribute for all layers.
      nM> plot/bg fftdemo.prm layer={color=red}
      nM> mess FUNC=send ID=plot NAME=openfile INFO=-1 DATA=fftdemo.prm
      NOTE: Color is still red
      NOTE: The INFO=-1 flags plot to close all current files.

  3. Override the units settings for the plot.
      nM> plot/bg/id=myplot fftdemo.prm
      nM> set reg.myplot.xUnits 1
      nM> set reg.myplot.yUnits 3

  4. Override the symbol settings for a layer.
        nM> plot world|cities{LAYER={SYMBOL=tri,SymbolSize=8,SymbolFill=on}}
     or
        nM> plot world|cities{LAYER={SYMBOL=square,SymbolFill=off,COLOR=red}}

     See the FEATURE explain file for details on the symbols and symbol settings
     available.

  5. Display x Units in MHz when DataFile units are Hz by default:
        nM> plot/bg/id=myplot/xmult=6 fftdemo.prm
     or
        nM> set reg.myplot.setxmult 6

  6. Turn AutoSelect on for a LayerT5 layer so that when a user clicks near a
     point the name of the point is displayed.
        nM> plot world.prm|cities.prm{Layer={AutoSelectEnable="CLICK",&
                                             AutoSelectMode="GreatArc",&
                                             AutoSelectRange="750000.0"}}
  7. Have a default color for a file
      nM> plot/bg/id=plotid LAYER={COLOR=RED}
      nM> message FUNC=SEND ID=PLOTID NAME=OPENFILE INFO=-1 DATA=fftdemo.prm
    or for type 2000 files
      nM> plot/bg/id=plotid LAYER={COLORMAP=XRAMP}
      nM> message FUNC=SEND ID=PLOTID NAME=OPENFILE INFO=-1 DATA=apenny.prm

  8. Plot a KML file and set the MAX Image Icon Size for non-zoomed icons to 10
     and the blending ratio for blending (tinting) colors in image Icons.
      nM> plot world.shp|kmlSamples.kml{LAYER={IconSize=10,
                                        ColorBlendRatio=.9}} view=geo

  9. Plot a KML file and do not display any labels for points.
      nM> plot world.shp|kmlSamples.kml{LAYER={SHOWLABEL=FALSE}} view=geo

  10. Plot a KML file and position the point label above the point Icon.
       nM> plot world.shp|kmlSamples.kml{LAYER={LABELPOS=TOP}} view=geo

  11. Do all painting in the SWING thread (EDT)
       nM> env set graphics SWING

  12. Let plots draw outside of the SWING thread
       nM> env set graphics SWING|REALTIME

  13. Plot a map and set the Readout to display ranges in Nautical Miles
       nM> plot world.shp dRangeUnits=NMI

  14. Plot a 1D file that has a very large Axis START value using /INDEX
       nM> wave temp.tmp start=1e30
       nM> plot/index temp.tmp

  15. Zoom in on a plot by 90% then zoom all the way out
       nM> plot world.prm /bg
       nM> message FUNC=sendw ID=PLOT NAME=ZOOMIN  DATA=.9
       nM> message FUNC=sendw ID=PLOT NAME=ZOOMOUT  DATA=-1

  16. Zoom in / out on a plot using keyboard shortcuts:
       nM> plot world.prm
       <press '+' keys on keyboard or number pad> (Zoom in %50)
       <press '-' keys on keyboard or number pad> (Zoom out %50)

       Note: These shortcuts can be re-mapped in ENV.KEYMAP.PLOT. See
             $NMROOT/nxm/sys/cfg/keyMap.tbl for example.

  17. Plot two files with different Z MIN/MAX ranges with z scaling by the layer
      nM> plot/scalez=layer temp.tmp|apenny.prm{LAYER={ZMIN=-50,ZMAX=100}}

  18. Open a file and immediately set the left Outer Limit (Bounds) using QUALS
      nM> message send idplot name=openfile data="world.shp" &
                  quals={outerlimits={x1=-100}}

  19. Create a XCut plot from a point on a Layer2D plot (message)
      nM> plot/id=plotid apenny.prm /bg
      nM>  message func=sendw id=plotid name="XCUT" data={IX=200,IY=200}

  20. Create a XCut of the current mouse position (keyboard shortcut)
      nM> plot apenny.prm
      Hover mouse where you want the cut and press X

  21. Display the Azimuth from a clicked point to the current mouse position
      in the readout.
      nM> plot world.prm READOUT="+azimuth"

  22. Reverse the current colormap on the apenny.prm plotted file
      invoke ,, reg.plotid.layers.apenny.reverseColorMap()

  23. Reverse a colormap when initially plotting
      nM> plot apenny.prm /reverseColors

  24. Reverse the colormap on a single layer only when initially plotting
      nM> plot world.shp{LAYER={ReverseColormap="TRUE"}}|cities.prm

  25. Plot type 1000 file without connecting lines by setting the Layer's line
      type to "Symbol" and to make the points "Diamond" symbols.
      nM> plot fftdemo.prm{LAYER={Type="Symbol",Symbol="Diamond"}}

  26. Set the Max Range of Z (Data) values to be within 50 units of the
      file data max value:
      nM> plot apenny scale=MAXZRANGE maxrange=50

  27. Invert the colormap (creating a photo negative effect)
      nM> plot/id=plotid apenny.prm{LAYER={InvertColormap="TRUE"}} /bg
      or using invoke after plot is already running:
      nM> invoke ,, reg.plotid.layers.apenny.invertColorMap()

  28. Set the mouse cursor appearance to be the wait cursor.
      nM> set reg.plot.cursor "WAIT"
      ... do something or wait for something ...
      nM> set reg.plot.cursor "DEFAULT"

  29. Zoom in to a portion of the plot when the plot is opened.
      nM> plot apenny.prm ZOOMTO={x1=50,x2=100,y1=0,y2=100}

  30. Plot a type 2000 file with multiple lines in "line" mode
      and use the /LPS switch to tell NeXtMidas to compute the
      data buffer size of the file.
      nM> plot alaska.prm type=line /lps=-1

  31. Create a plot with a LayerGeo and set the reference time for the
      StateVectors in the LayerGeo plot from within a macro:
       startmacro
       ...
       timex now sod=mySOD
       plot/id=plot1 world
       layer geoLayer {NAME=GL,SVA=sv1.prm,SVB=sv2.prm,...} plot1
       set geoLayer.timeCode mySOD
       ...
       endmacro

   32. Create a plot with a LayerGeo and set the timecode (J1950) for the
       StateVectors in the LayerGeo plot from within a macro:
       startmacro
       ...
       timex now sod=mySOD
       calc myEpoch now 300 -   ! 5 minutes ago
       plot/id=plot1 world
       layer geoLayer {NAME=GL,SVA=sv1.prm,SVB=sv2.prm,...} plot1
       set geoLayer.timeCode myEpoch
       ...
       endmacro

   33. Create a plot that updates a RESULT named "cfreq" with the Y value of
       the current mouse position whenever the mouse is clicked:
         nM> plot/xcnt=click/mtag={y="cfeq"} nxm.sys.dat.sinewave

   34. Save/export contents of the PLOT to an image file.
       nM> plot/bg/id=plotid world
       nM> message FUNC=SEND ID=PLOTID NAME=EXPORTIMAGE DATA=myplotimage.png

   35. Change the default units labels on the X axis to custom text:
       nM> plot/bg/id=plot1 sinewave
       nM> set reg.plot1.XAxisLabel "Puppies"

   36. Change the custom label on the X axis back to default text:
       nM> set reg.plot1.XAxisLabel ""

   37. Open a new file and pass in the /ALL argument in order to show all the
       data in the plot area. (Since NeXtMidas 3.3.1)
       nM> message send plot1 name="OPENFILE" info=-1 &
           data=myfile quals={"/ALL=true"}

   38. Hiding/showing a layer:
       nM> plot/bg/id=plotid world.prm|cities.prm
       nM> set reg.plotid.layers.cities.enable -GLOBAL ! hide cities layer
       nM> set reg.plotid.layers.cities.enable +GLOBAL ! show cities layer
       nM> set reg.plotid.layers.cities.enable ~GLOBAL ! toogle layer visibility
       nM> invoke ,, reg.plotid.layers.cities.toggle   ! toggle layer visibility

  Using dRange and Azimuth Readout Options (LatLon and Mercator Views Only)
  ========================================================
    The dRange and Azimuth readout options give the user the distance and
    direction between a mouse click location and the current mouse pointer.
    The default readout includes dRange but Azimuth must be enabled by the
    user. The units of measurement for the dRange is meters by default but
    can be set to kilometers or nautical miles.

  Holding Graphical Refreshes on Features and Layers
  ========================================================
    In NeXtMidas 2.7.2, enhancements were made to allow users to suspend
    graphical refreshes on entire plots or just the Features on the plots. This
    was expanded in 2.7.4 to allow users to hold refreshes on just the Layers
    while still allowing Feature refreshes to continue.

    The typical use of holding refreshes is when a user is processing a large
    amount of updates in a short amount of time and does not want or need to
    draw each update.

    For detailed example see $NMROOT/nxm/sys/test/test_plot_hold_refreshes.mm

    NOTE: In order to avoid unnecessary refreshes, when re-allowing refreshes
    on Layers, NeXtMidas does NOT automatically refresh the plot. It is up to
    the user to do this (if needed).

  ZOOMing and Adjusting the Viewable Area of a Plot
  ========================================================
    Plot keeps track of and applies user bounds changes as they occur.
    This allows the user to set ZOOM boundaries (as well as standard x1=, x2=,
    y1=, etc boundaries) before actually having data. The QUALS field of some
    MESSAGEs was expanded to allow for passing in outer limits or viewport
    limits (current view) using the syntax QUALS={OUTERLIMITS={X1=,X2=,Y1=,
    Y2=,Z1=,Z2=},VIEWLIMITS={X1=,X2=,Y1=, Y2=,Z1=,Z2=}}. See the example in
    the example section. Since 3.1.0, users can substitute XMIN, XMAX, YMIN,
    YMAX, ZMIN, and ZMAX for X1, X2, Y1, Y2, Z1, and Z2, respectively.

    In NeXtMidas 2.9.1, the ZOOMTO= keyword only parameter was added to allow
    users to zoom in on a plot when they initially open it.

    ZOOMIN:
      ZOOMIN allows a user to quickly zoom in on a plot without the need for
      dragging a box or sending a message. To ZOOMIN using the keyboard, simply
      press the '+' key (there is no need to hold down SHIFT). This will zoom
      in the current view by the default (currently 50%). If /dblclickzoom is
      enabled, double-clicking with the left mouse button will re-center the
      plot on the location of the double-click and then execute a ZOOMIN.
      Finally, rotating the mouse scroll wheel forward will execute one ZOOMIN
      per notch.

    ZOOMOUT:
      ZOOMOUT allows a user to quickly zoom out on a plot without the need for
      dragging a box or sending a message. To ZOOMOUT using the keyboard, simply
      press the '-' key. This will zoom out the current view by the default
      (currently 50%). If /dblclickzoom is enabled, double-clicking with the
      right mouse button will re-center the plot on the location of the
      double-click and then execute a ZOOMOUT. Finally, rotating the mouse
      scroll wheel backward will execute one ZOOMOUT per notch.

    PAMNXY:
      PANXY allows a user to quickly shift the viewable area of a plot. To
      PANXY, simply press the arrow (left, right, up, down) key of the direction
      you wish to shift. This will move the viewable area by the default pan
      view adjustment (currently 10%).

      Pressing HOME (left), END (right), PAGE UP, or PAGE DOWN
      will adjust the view by a greater percentage (currently 50%).

      You can also click and drag the small scrollbar that appears when zoomed
      in or press and hold the Middle Mouse Button and drag the mouse to pan.

    NOTE 1: Keyboard shortcut keys can be remapped using the environment
            variable KEYMAP={PLOT={<TABLE>}}

    NOTE 2: Double-Click ZOOMIN/ZOOMOUT can be enabled/disabled with the switch
            /DBLCLICKZOOM=TRUE,FALSE.

    NOTE 3: Mouse scroll wheel ZOOMIN/ZOOMOUT can be disabled with the switch
            /MOUSEWHEELZOOM=FALSE, which is the current default.

    NOTE 4: ZOOMIN/ZOOMOUT from the keyboard, message, or mouse does not use
            the stored image ZOOMs (history), therefore the normal limitation
            of fifteen ZOOM levels does not apply. Thus, ZOOMOUTs will
            execute a redraw.

    NOTE 5: In addition to the keyboard/mouse shortcuts, ZOOMIN/ZOOMOUT/
            PANXY can be accomplished using messages, which allows the user
            to use a different percentage for the action. See messages above for
            details.

  Plotting KML files
  ========================
    In NeXtMidas, KML files are plotted like other files. However, since the
    representation (Mark-up) of the data is handled in the KML file itself via
    element tags and attributes, there are no input arguments for items such as
    colors, fonts, etc.

    NeXtMidas recognizes the .kml extension on the file and parses it using its
    KML parser, which uses the Java SAX XML parser. Mal-formed files will throw
    exceptions as in XML.

    **NOTE**: In the JAVA SAX parser, ending element tag names are case
              sensitive relative to the starting element tag. For example:

             <folder> ... </folder>   CORRECT
             <FOLDER> ... </FOLDER>   CORRECT
             <Folder> ... </Folder>   CORRECT
             <folder> ... </Folder>  - WRONG -

    The following plots the drawable objects in a KML file on a globe:

      nM> plot world.shp|nxm.sys.test.kmlSamples.kml view=geo

      Note: The above example file requires an Internet connection to properly
            display the Ground Overlay and Image Icons.

    NeXtMidas allows the user to configure several items not specified in the
    KML specification:
      ALLOWPOPUPS     - Boolean - Whether or not to show popups for KML points
      COLORBLENDRATIO - float   - Ratio (0 to 1.0) to blend (tint) an image icon
      FORCEREFRESH    - boolean - Ignore the modified date on a linked file.
                                  (see details below).
      ICONSIZE        - int     - Max allowable size of (non-zoomed) Image Icons
      ICONZOOMSIZE    - int     - Max allowable size of (zoomed) Image Icons
      LABELPOS        - String  - Where to position the labels for points.
                                  Allowable settings:
                                    TOP     - Centered above the icon
                                    TOPR    - Text begins near the top right
                                    BOTTOM  - Centered below the icon
                                    BOTTOMR - Text begins near bottom right
                                    RIGHT   - Text begins to the right of icon
      SHOWLABEL       - Boolean - Whether or not to display labels for points.

      Without FORCEREFRESH being set to TRUE, LayerKML will ignore (not plot)
      any network linked file that has already been plotted if it has not been
      modified, regardless of the specified refresh interval. This is done to
      avoid "blinking" displays from the refresh and to conserve cpu. The flag
      FORCEREFRESH is intended to be used when the network linked file is a cgi-
      script and can generate new data without the script itself changing.

    For more information, see the JavaDocs for LayerKML.java and the Google
    online reference (for KML structure).

  Plotting type 3000 files
  ========================
    A non-homogeneous file is plotted X vs. Y where the axis is specified by:

       nM> plot file3000{Layer={LAYERTYPE=XY,X=LAT,Y=LON}}
    or
       nM> plot file3000{Layer={LT=XY,X=LAT,Y=LON}}

    where LT or LAYERTYPE represents the Layer Type.  The layer type may be  a
    full package name (i.e. nxm.sys.libg.Layer1D) or the layer suffix (i.e. 1D,
    2D, XY,...) if the layer named Layer[suffix] and is located in nxm.sys.libg.

    Type 3000 files that store multiple columns of data can be plotted using
    LayerMulti:
      nM> plot testxy3000.prm{Layer={LT="Multi",COLUMNS="*"}}
    or
      nM> plot testxy3000.prm{Layer={LT="Multi",COLUMNS="ORD|ORD2|ORD3"}}

  Plotting type 5000 files
  ========================
    To plot a cone flag file clipped at a plane vertical to the point (the POS
    field in the file) on  the Earth's surface (this is what X-Midas does)
      nM> plot world.prm|coneflags5000.prm{layer={flags=CONEFLAGVERT}}

    To plot a cone flag file along the Earth's surface, extending to the horizon
      nM> plot world.prm|coneflags5000.prm

  Plotting type 6000 files
  ========================
    These types of files are also non-homogeneous and can be treated almost
    exactly like a type 3000.  In fact, type 6000 files are merely extensions of
    type 3000 files that allow longer record names and more than 26 subrecords.

    For example, a Type 6000 file with columns "LON" and "LAT" can be plotted
    using the following syntax:

      nM> plot testfile6000.prm{LAYER={LT="Scatter",X="LON",Y="LAT"}


  Plotting SHAPE (.shp) files
  ===========================
    To plot a SHAPE file:
      nM> plot world.shp

    If the SHAPE file has a companion file (.dbf) which contains the country
    name (here indicated by NAME), the following allows the country name to be
    displayed  in the readout.
      nM> plot world.shp{LAYER={LABEL=NAME}}

    The layer used by shape files (see nxm.sys.libg.LayerShape) can use one of
    the following algorithms to determine how to color the shapes in the file:
      Default - Uses the default algorithm (currently MinAdj, but may change
                between releases).
      Mono    - Monochrome, all shapes have the same color. This was the default
                in NeXtMidas 2.0.0 and earlier when a single COLOR was given.
                NOTE: The Monochrome color will be the first color listed in
                the colormap. To change the mono color, change the first color
                in the colormap.
      Mod5    - The index of the color (in the color map) to use for a shape is
                equal to the shape's index MOD 5. This was the default in
                NeXtMidas 2.0.0 and earlier. (The color map must have 5 or more
                colors in it for this to work.)
      ModN    - Same as Mod5 but uses all available colors in the color map.
      MinAdj  - Minimizes the number of adjacent shapes that have the same color
                (works best with five or more colors in the color map). This
                algorithm considers two shapes to be adjacent if they share
                a common point. (Note: This is the slowest option, but has the
                best results, by far.) If the file is an ARC or POINT file then
                this defaults to using the ModN algorithm to improve speed.
      OnSelect- Colors the selected shape in one color while other items use
                a default color. When the world.shp file is used this enables
                the user to highlight an individual country. By invoking the
                setSelectedValue(<tag>,<value>,<ignoreCase>) method in
                LayerShape. For example:
                nM> invoke,,reg.plot.layers.world.setSelectedValue(CODE,US,TRUE)

      nM> plot world.shp{LAYER={LABEL=NAME,ColoringMode=Mod5}}
      nM> plot world.shp{LAYER={LABEL=NAME,ColoringMode=MinAdj}}

  Plotting NGA images (requires MAP option tree)
  ==============================================
  To plot NGA data:
    1) Generate the list of table-of-contents files in the NGA directory
       structure Assuming the directory /midas/mapdata/ contains NGA directories
       (such as CIB10_129, GNC_126, JNC_127, ...)
         nM>mapper MTOC /midas/mapdata/master_toc.tmp /midas/mapdata

    2) Create a table file (.tbl) with FILE= references for all desired layers
       in addition to /midas/mapdata/master_toc.tmp.
       For example (master_toc_maps.tbl):
         FILE=nxm.map.dat.world.shp{LAYER={LABEL=NAME},TAG=CONTINENTS}
         FILE=/midas/mapdata/master_toc.tmp

    3) Run the plot command with the table file as the SETUP= input.
       nM>plot setup=/midas/mapdata/master_toc_maps.tbl
       Zoom into area of map with imagery to see them.

    Steps 1 and 2 only have to be performed once (unless the NGA directories are
    changed, of course)

  If the NGA data is on a remote system the NeXtMidas Map Server can be used to
  serve the images up for remote plotting with LayerNMS (see EXPLAIN MAPSERVER).

  Plotting Maps from a Map Server (WMS/NMS)
  ================================================
    o Plot images from an OpenGIS Web Map Server (WMS):
        nM> plot {LT="WMS",URL="http://<server>"}|world.prm view=LatLon

      Since 3.3.2, the URL String can contain a comma-separated list of multiple
      URLs. NeXtMidas will attempt to connect to the first URL in the list, and
      if that is not reachable, then it will attempt to connect to the second
      URL in the list, etc.

      Since 3.3.3, the automatic connection to the Map Server while setting the
      URL can be disabled using (NOTE: AutoConnect= must be before URL=):
        nM> set url "http://<server>:<port>/..."
        nM> plot {LT="WMS",AutoConnect=false,URL="^url"}|world.prm view=LatLon
      later, the connection can be established using:
        nM> res reg.plot.layers.wms.connect()

      By default, no WMS layers are turned on. The WMS layers can be graphically
      enabled using the WMS config panel. In the plot MMB->LAYERS->WMS to get
      the config window. Layers can be specified on the command line by name
      separated by commas (where the highest priority is at the end of list):
        nM> plot {LT="WMS",URL=mapURL,Layers="shapePolitical,Relief,cadrg"}|...

      To override the default network connection/open and read timeouts when
      communicating with the Map Server to 30 and 99 seconds, respectively.
      NOTE: the ConnectTimeout and ReadTimeout MUST come before the URL setting:
        nM> plot {LT="WMS",ConnectTimeout=30,ReadTimeout=99,URL=mapURL,...}|...

      To enable use of tiles with three download threads in the background:
        nM> plot {LT="WMS",URL=mapURL,UseTiles=true,DownloadThreads=3,...}|...

      Once the layer is configured, the configuration can be dumped to a table
      using:
        nM> res reg.plot.layers.wms.config

      Note that layer names and URLs are CASE SENSITIVE, so always use quotes!

    o Plot images from the NeXtMidas Map Server (NMS):
        nM> plot {LT="NMS",URL="http://<server>:<port>/nms/"} view=LatLon

      Plot images from the mapserver with the BLUEMARBLE background:
        nM> plot {LT="NMS",URL="http://<server>:<port>/nms/",&
             BACKGROUND="BLUEMARBLE"}|world.shp{LAYER={LABEL="NAME",OPAQ=0}} &
             view=LatLon

  Plotting Files Using LayerGeo
  =============================
    o NeXtMidas has a custom layer for plotting certain geo data. This class
      is intended for use through the macro language.

    o When bypassing the macro language (i.e. calling directly from Java),
      users should call the setRef(Object ref) method to set their Midas
      reference, otherwise some files (such as those in RAM, may not be found).

    o LayerGeo uses two StateVectors (usually type 500 files) to compute
      FDOA,TDOA, etc. These two files typically reference their data elements
      through a time reference (offset from start). Since NeXtMidas 3.1.1,
      when setting the desired time for the StateVectors, users can call either
      LayerGeo.setTime(double) to pass in the reference time, or call
      LayerGeo.setTimeCode(double) and pass in a J1950 time, which is
      then converted to the appropriate reference time for the StateVectors.

    o When setting the reference time in LayerGeo.setTime(double), if the given
      value is a double greater than 86400*100 (100 days), NeXtMidas assumes
      the user meant to call setTimeCode(double), so the given value is
      passed through to that method.

  Plotting IMAGE Files (and TBL Files)
  ====================================
    To plot the PNG file in the SYS/DAT area:
      nM> plot network.png

    To plot a JPEG so it lines up with other data (this example is one of the
    NASA Blue Marble pictures of the world:
      nM> plot world_200409_3x5400x2700.jpg{LAYER={XSTART=-180,YSTART=90,&
                                            XDELTA=360/5400,YDELTA=-180/2700}}&
               |world.shp{LAYER={LABEL=NAME,OPAQ=0}} view=LatLon

      Here XSTART and YSTART are the real-world-coordinates of there the upper
      left pixel is located. The XDELTA and YDELTA are the extents divided
      by number of pixels (i.e. deg/pixels). Most of the time YDELTA will need
      to be negative to account for images being measured top-to-bottom rather
      than bottom-to-top.

   Alternatively this information could all be put into a tbl file...
      bluemarble.tbl
        : COMMENT="My comment"
        : FILENAME="nxm.map.dat.bluemarble.jpg"
        : XSTART=-180.0
        : YSTART=90.0
        : XDELTA=360.0/5400.0
        : YDELTA=-180.0/2700.0
   and then plotted quickly using:
     nM> plot bluemarble.tbl


  Plotting CSV Files
  ==================
    CSV files can be plotted as "X vs Y" or "Multi" files depending on their
    data. (Note that the name of the columns to be plotted must be prefixed with
    a numeric type specifier.) Read "Plotting type 3000 files" for details on
    these layer types.

    LayerMulti (default):
      nM> plot myfile.csv{HEADERROWS=1,COLUMNNAMES=SF:A|SF:B,&
                          LAYER={COLUMNS=A},TAG=A}

    LayerXY:
      nM> set quals {HEADERROWS=L:1,COLUMNNAMES="NAME|CODE|F:LAT|F:LON",&
               LAYER={LT="XY",X="LON",Y="LAT",LINE={COLOR="red",TYPE="symbol"}}}
      nM> plot world|nxm.sys.dat.airports.csv^{quals}

    In NeXtMidas 3.1.1, a new Layer (LayerScatter) was added to provide more
    support for plottinig CSV (and other) files. LayerScatter may replace
    LayerXY in future releases.

    LayerScatter:
      nM> set quals {HEADERROWS=L:1,COLUMNNAMES="NAME|CODE|F:LAT|F:LON",&
         LAYER={LT="Scatter",X="LON",Y="LAT",LINE={COLOR="red",TYPE="symbol"}}}
      nM> plot world|nxm.sys.dat.airports.csv^{quals}

Formatting:
  In NeXtMidas 3.3.3, the /DATEFORMAT switch supports a wide variety of
  time/date formats made available via the MFormat class. Acceptable formats can
  be either a standard Midas format ("STD", "ACQ", "EPOCH", "NORAD", "VAX",
  "TCR", "HMS", "YMD", "ISO8601", etc.) or they can be any of the patterns
  accepted by the java.text.SimpleDateFormat class.

  For details, please see nxm.sys.lib.MFormat, nxm.sys.lib.Time.formatList and
  java.text.SimpleDateFormat.

DRAG and DROP:
  PLOT supports Drop in the following way (DRAG is not supported):

  Since actions to take for DROP-ed objects are application-dependant,
  objects DROP-ed onto a PLOT are sent to the Message Handler (then typically
  sent to a Macro application) for handling.

  For example usage, see the macro $NMROOT/nxm/sys/test/test_plot_drag_drop.mm.


Switches:
  /ALL        - Plots ALL data in the file. Note: this also sets the Backing
                Store option, so the following two lines are equivalent:
                   nM> plot myfile.prm /all
                   nM> plot myfile.prm options="+ALL|BS"
  /AXISBUFFER= - Set the size of the buffer area drawn around the plot axis.
                This buffer area ensures that values that fall exactly on the
                axis are displayed. Set to 0.0 to disable. Set to a negative
                number to reduce values display area. [DEF=1e-12]. (Since 3.1.0)
  /AXISINDEX  - Sets Axis START=0 and DELTA=1 (Identical to /INDEX) [DEF=FALSE]
  /CMAP=      - (Layer2D only) Use predefined Color map. e.g: GrayScale,Ramp,
                XRamp,Wheel,Terrain,Multi,T5Layer,Grid,Spectrum,XDatalist.
                This overrides the [CMAP] parameter.
  /COLORS=    - (Layer2D only) Custom list of colors to use. This overrides the
                [CMAP] parameter and /CMAP switch.
  /DATEFORMAT= - Output format used to display time. See the above section
                titled "Formatting" for details of valid inputs. In addition,
                use AUTO to allow the plot to determine the appropriate format
                where time spanning over a day will display STD, otherwise, HMS
                format will be displayed.                (Since NeXtMidas 3.3.3)
  /DB         - Display in dB (same as CM=10LOG)
  /DB2        - Display in dB (same as CM=20LOG)
  /DBLCLICKZOOM - Enable zooming in/out through the use of double-clicking the
                mouse.                                   (Since NeXtMidas 2.7.2)
  /DRAGDROP   - Enable or disable Drag and Drop.         (Since NeXtMidas 3.3.0)
  /EXIT=      - Mask value with flags to exit: RETURN, MENU, MESSAGE, WINDOW
                or ALL [DEF=NONE in pipe mode, else ALL]
  /FOCUS      - Try to get focus if true. (DEF=TRUE from shell,FALSE from macro)
  /INDEX      - Set Axis START=0 & DELTA=1 (Identical to /AXISINDEX) [DEF=FALSE]
  /REVERSECOLORS - Reverse the colormap used by the layers of the plot
  /LAYER      - Same as [LAYER] parameter. Overrides [LAYER] if both are present
  /LEGEND=    - Legend corner (TL/TOPLEFT,TR/TOPRIGHT,BL/BOTTOMLEFT,
                BR/BOTTOMRIGHT) the /LEGEND switch alone default is TOPLEFT.
              or
                Table of settings for the legend. Table keys include:
                  CORNER - The corner in which to come up
  /LPB=n      - Type 2000. Lines per buffer (max) used in grabs [DEF=16]
                For LayerMulti this is Line-segments Per Buffer (this is the
                same as /LPS= for pipes, but can be less in the case of paging
                for a large static file).
  /LPS=n      - Type 1000,2000. Data frames/lines per screen over-ride (normally
                scales to window height). If using a LPS value less than 16, set
                /LPB=1. 
                For Type 2000 files plotted with type=line (Layer1D): 
                  You may specify /LPS=-1 to compute the PlotFile's data buffer 
                  size. 
                For Type 2000 files plotted with type=raster (Layer2D):
                  LPS=0 is the same as not having the switch (LPS based on
                        screen size) (Since NeXtMidas 3.7.0)
                  LPS = -1 will default LPS to 128
                  LPS > 0 sets LPS to the specified value
                  Note: In paging mode, LPS is set to /LPB (or default LPS of
                        128 if /LPB is not specified)
                For LayerMulti this is Line-segments Per Screen, and defaults to
                  the SIZE of the file/pipe; this should be >= LPB.
  /MSGID=     - Registry name of command to handle messages (usually MAIN)
  /MTAG=t     - Used in conjunction with [CNT] or /XCNT=. This is a table of
                key value pairs where the key is one of "X","Y","Z", or "X+Y"
                and the value is the name of a RESULT to set with the
                corresponding value of the key, based on mouse actions
                defined in CNT or /XCNT. Since 3.1.1.
  /MOUSEWHEELZOOM - Enable zooming in/out through the use of the mouse scroll
                wheel.                                   (Since NeXtMidas 2.7.2)
  /NICE=      - 1=retry for layers if don't exist yet
                2=disconnect from pipes if iconified
  /NOPUSHPOP  - Disables user Push/Pop for a window (e.g. clicking the 'X' when
                popped out. Does not affect Push/Pop messages from a macro).
  /OPENWARN   - Mask value with flags indicating where to WARN when a file can not be
                opened: NONE, POPUP, or PRINT [DEF=POPUP]
                (Since NeXtMidas 3.5.2)
  /PRECISION= - Number of decimal places of precision used for readout display.
                This has higher precedence than the ExtPrec readout option.
  /QUICKDRAW  - Type 5000 only. Optimizes drawing of objects in Type 5000 files,
                but some objects do not get drawn (lines where one of the points
                is off-screen).                          (Since NeXtMidas 3.1.0)
  /READOUT=   - Sets the ReadOut mask (e.g. "/READOUT="+OnAxis|+Units").
                NOTE: This will override the [READOUT] parameter.
  /RT         - use real-time algorithm even on files
  /SCALEZ=    - Layer2D only. Scale color range option= PLOT,LAYER [DEF=PLOT]
                  PLOT  - All Layers / Files use the same Z Min and Z Max [DEF]
                  LAYER - Individual Layers scale their Z Min and Z Max
  /THEME=     - Use a named Theme (Desktop,Default,WoB,GoB,BoW,Browser,Gear1,
                Gear2,Gear3,Gear4,Nak)
  /THEME=tbl  - Creates a custom theme from a table of parameters. See PANEL for
                complete description. Table keys include:
                  CBG     - background color
                  CFG     - foreground color
                  CWTS    - widget top shadow
                  CWFH    - widget foreground highlight
                  CWBG    - widget background color
                  CWFG    - widget foreground color
                  CWTITLE - widget title color
                  CWBS    - widget bottom shadow
  /TIMEALIGN  - Type 1000 time-based plots only. Align overlapping layers based
                off the XStart of the base layer.        (Since NeXtMidas 3.1.2)
  /WIN=       - Specifies the name of WINdow (or panel) in the registry that
                will host this (see nxm.sys.libg.MWindow). If the window name
                is not specified, or included in panel config, a new frame is
                created.
  /WIN.cmd=   - Similar to /WIN.
  /WDISP=n    - Set the monitor number for the display [0...n-1]
  /WFS=         Set the axis labels and axis title font size [DEF=12]
  /WPOS=      - Set the position of the plot when it opens, use the syntax
                "/WPOS=(X,Y[,Width,Height])" where all values are in pixels.
  /WTITLE     - Sets the window bar title (not the axis title).  The readout
                will override this when READOUT=ONAXIS is selected. [DEF=PLOT]
  /XCNT=      - See [CNT] above. [CNT] has precedence when both are
                present.                                 (Since NeXtMidas 3.1.1)
  /XMULT=     - Convert x units using scientific notation prefix.
                Arguments for this switch can be passed in three ways:
                  1) n, where n is one of {-12,-9,-6,-3,3,6,9,12}:
                  (e.g. 6 is Mega) --OR--
                  2) One of { "pico", "nano", "micro", "milli",
                  "Kilo", "Mega", "Giga", "Tera" } --OR--
                  3) One of {'p','n','u','m','K','M','G','T'}
  /YMULT=     - Convert y units using scientific notation prefix. (cf. /XMULT)
  /ZOOMADJ=   - Percentage (float) to adjust plots when doing incremental zoom.
                Value is greater than zero and less than 1. [DEF=0.1]
  /ZOOMMULT=  - Multiplier which is used when moving zoom by larger amount,
                typically through the use of PAGE UP, PAGE DOWN, HOME, and END
                shortcut keys. [DEF=5.0]

See Also: LAYER, FEATURE, PANEL, nxm.sys.libg.MPlot, nxm.sys.libg.MColor