PLOT
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