GPLOT Graphics Routines TGW10-JUL-87 4-JAN-91S ØGPLOT.AA0ËR 0510100105110KK1 2 090 0 1 . 20-1(Footnote # Continued from Previous Page) (Footnote # Continued on Next Page) 0)"30 0 1 10 9 09  CN1y 1 N1 N1 1 9999 YYN dp_ps afFinal Draft Settings  10..T....1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.   P     10..T....1.........2.........3.........4.........5.........6.....R...7.........8.........9.........10........11........12........13. GPLOT Graphics Routines …ÿ ƒTPage …# ƒ …0qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqƒ    …ÿ ƒCTable of Contents    P  10..T..T.1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.    GPLOT Graphics Routines …ÿ ƒTPage …# ƒ …0qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqƒ      I…\1 ƒ …IntroductionƒIH H H …ÿ ƒTGPLOT is a collection of routines written to support generation of plots of scientific data with GKS graphics. They have been developed and tested using DEC VAX-GKS 4.0/4.1 which is a level 2c product. Since DEC GKS extensions to the GKS standard have been used, some special features may need to be modified before GPLOT will function correctly with another GKS package. These routines can be linked to your programs by including the following in your link statement:  …ÿ ƒT…. . . ,GPLOT/OPTƒ.  This logical name points to both the DEC VAX GKS library and GPLOT routines. Standard GKS calls may be mixed with calls to GPLOT routines, but you should be aware of attributes and transforms set by GPLOT. One of the primary purposes of GPLOT was to make it easy to convert graphics written for CA-DISSPLA 10.5, so many GPLOT routines originally had the same name and functioned in the same way as DISSPLA 10.5. Since the original version of GPLOT, it has been modified for compatibility with version 11.0 of CA-DISSPLA. DISSPLA 11.0 uses character strings instead of byte strings for text, but uses the same subroutine names as DISSPLA 10.5. The version of GPLOT compatible with DISSPLA 11.0 is now the default. To link this version of GPLOT include "GPLOT_DIR:GPLOT/OPT" at the end of your link statement.:  …ÿ ƒTGPLOT provides routines that allow you to create axes and plot data easily. It provides both linear and logarithmic axes and allows marking the data with a variety of symbols and error bars. It also provides routines for placing a legend which labels the curves on the plot. This will automatically show the correct symbol, curve type, and color for each data curve. GPLOT can also do a number of interpolations to fit experimental data. GPLOT has routines for drawing bar graphs, contour plots, and 3D surface plots with hidden-line removal. There are routines for drawing polygons, circles, ellipses, arcs of circles or ellipses, and for drawing vectors with arrow heads. These may be filled or open. GPLOT does not provide blanking of areas like DISSPLA does because GKS supports clipping only at the plot boundary, but for some devices it is possible to erase an area by filling the area with the background color. GPLOT also has some conventions which differ from DISSPLA. For instance, the tic marks are by default to the inside for GPLOT and to the outside for DISSPLA, and GPLOT draws axes at the top and right hand side of the plot area..    I…\1ƒ … Plot OrientationƒIH H H …ÿ ƒTFor the laser printers supported by DEC VAX GKS the default orientation is landscape. If you draw a plot intended to be in portrait orientation, your first GPLOT call should be:  …ÿ ƒT…CALL ORIENT('PORTRAIT')ƒ  Otherwise your 8.5" X 11" plot will appear scaled down to fit in the landscape orientation. This call must be made before the device nomination call because the page orientation is determined when the device is nominated. …ÿ ƒTFor screen devices such as the VAXstation or TK4014 terminal, the plot orientation cannot be changed. The Tektronix 4014 output only device which is used to produce plots on the DEC LN03-Plus also does not support changing to portrait orientation.    I…\1ƒ … Device Nomination RoutinesƒIH H H …ÿ ƒTBefore a plot can be generated, one or more workstation devices must be nominated. In most cases, the first GPLOT call should be:  …ÿ ƒT…CALL GSTARTƒ  The devices for a given site are defined in the routine GPLOT_SRC:GDINIT.DAT. Information in this file allows plot files to be sent to a particular print queue automatically. Plot files which are to be sent to a print queue automatically are created in the SYS$SCRATCH directory and will be deleted after printing. If GDINIT does not specify a print queue, the output file will be created in your current directory and not printed. Some options in the menu, such as Postscript-file or Tektronix-file are designed to create an output file for later use. You can create your own customized menu by copying the file GPLOT_SRC:GDINIT.DAT to SYS$LOGIN:. And then using the program EDIT_GMENU to modify it as desired. To add new devices, you will need to know the workstation type numbers which are given in the DEC GKS documentation. For plotters to print automatically you will also need the queue name and the name of any form needed to put the printer into the graphics mode. The device name for a hardcopy device usually is the queue name, but can be any name of your choosing. When running in batch mode you will need to include the command:  $ DEFINE PLOTTER device-name  where "device-name" is the name you have specified in setting up your menu.  Information about each device can be obtained during the GMENU display by selecting the device and pressing the help key. The system manager uses a text editor to store site-dependent help information in the file SYS$HELP:GPLOT.HLP then uses the LIBRARY command to insert the new information in SYS$HELP:GPLOT.HLB.  For Batch jobs, it is recommended that you make the following the first call to GPLOT:  …ÿ ƒT…CALL GSTARTƒ  GSTART will look at the logical names SCREEN and PLOTTER to see which device(s) to activate. If neither of these is defined to be a valid device, GSTART will call GMENU to produce a menu of available graphics devices. If both SCREEN and PLOTTER are defined as valid devices when GSTART is called, the plot will be generated on both at the same time. To stop getting plots on a particular device, deassign SCREEN and/or PLOTTER or define them to be different devices. For instance if you have a program, GRAPH, which calls GSTART you could use the following series of commands to preview a plot and then make a hard copy on the LW print queue (assuming this is a valid queue at your site).  …ÿ ƒT…$ DEFINE SCREEN TK4014ƒ …ÿ ƒT…$ RUN GRAPHƒ …ÿ ƒT…$ DEASSIGN SCREENƒ …ÿ ƒT…$ DEFINE PLOTTER LWƒ …ÿ ƒT…$ RUN GRAPHƒ  If you omitted the second and third commands, the two plots would be generated simultaneously.  …ÿ ƒTWe do not currently have a way of plotting CGM metafiles, but GKS metafiles can be plotted using a postprocessing routine (use the command POSTGKS to run the GKS postprocessor).   …ÿ ƒTAlthough GMENU and GSTART are the recommended methods of nominating a graphics device, it is possible to nominate many devices with a direct subroutine call. Most of these are included to emulate CA-DISSPLA. The device nomination routine calls currently supported are:  10..T....1.........2.........3.T.......4.........5.........6.........7......R..8.........9.........10........11........12........13.  …ÿ ƒT…Device Callƒ…ÿ ƒT…DeviceƒH H …ÿ ƒT…CALL GKSMƒ…ÿ ƒTProduce GKS Graphics Metafile. …ÿ ƒT…CALL COMPRSƒ…ÿ ƒTSame as GKSM …ÿ ƒT…CALL CGMCOƒ…ÿ ƒTProduce CGM Character metafile …ÿ ƒT…CALL CGMTOƒ…ÿ ƒTProduce CGM Clear Text metafile  …ÿ ƒT…CALL POSTSCRIPTƒ…ÿ ƒTApple Laser Writer …ÿ ƒT…CALL PSCRPT(X0,Y0,XW,YW)ƒ…ÿ ƒTSame as POSTSCRIPT (arguments ignored) …ÿ ƒT…CALL HP7550ƒ…ÿ ƒTHewlett Packard pen plotter …ÿ ƒT…CALL LA50ƒ…ÿ ƒTProduce plot file for LA50. …ÿ ƒT…CALL LA75ƒ…ÿ ƒTProduce plot file for LA75. …ÿ ƒT…CALL TK4014Fƒ…ÿ ƒTGraphics file to be printed on TK4014 emulator …ÿ ƒT…CALL QMSƒ…ÿ ƒTSame as TK4014F …ÿ ƒT…CALL QMS2ƒ…ÿ ƒTSame as TK4014F …ÿ ƒT…CALL TALRS3ƒ…ÿ ƒTSame as TK4014F …ÿ ƒT…CALL LN03TKƒ…ÿ ƒTSame as TK4014F  …ÿ ƒT…CALL TK4014ƒ…ÿ ƒTGraphics terminal with TK4014 emulation …ÿ ƒT…CALL VAXSTATIONƒ…ÿ ƒTProduce plot on VAXstation window …ÿ ƒT…CALL REGIS(I1,I2)ƒ…ÿ ƒTPlot on VT240 (I2=0) or VT241 (I2=1) …ÿ ƒT…ÿ ƒT(I1 is ignored) …ÿ ƒT…CALL VT330ƒ…ÿ ƒTPlot on VT330. …ÿ ƒT…CALL VT340ƒ…ÿ ƒTPlot on VT340.  …ÿ ƒT…CALL GMENUƒ…ÿ ƒTChoose device from screen menu …ÿ ƒT…CALL GSTARTƒ…ÿ ƒT(See above)    I…\1ƒ … Basic Plot RoutinesƒIH H H …ÿ ƒTA basic plot can be generated using the following basic GPLOT calls:   10..T...L1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL GSTARTƒ …þ ƒ …þ ƒ…CALL PAGEƒ …(PAGEX,PAGEY)ƒ …þ ƒ(PAGEX and PAGEY are the dimensions of the page. If …þ ƒthere is no call to PAGE, then PAGEX and PAGEY take the …þ ƒdefault values of 8.5 and 11.0. The page orientation …þ ƒwill be landscape unless ORIENT('PORTRAIT') is called …þ ƒbefore GSTART) …þ ƒ …þ ƒ…CALL AREA2Dƒ …(XAXIS,YAXIS)ƒ …þ ƒ(XAXIS and YAXIS are the lengths of the axes. AREA2D is …þ ƒone routine which must …alwaysƒ be called) …þ ƒ …þ ƒ…CALL XNAMEƒ …(XNAME,LXNAME)ƒ …þ ƒ(XNAME is the name of a text string containing the x-axis …þ ƒlabel. LXNAME is the length of that name. If XNAME ends …þ ƒin a dollar sign ($), LXNAME can be specified as 100 and …þ ƒthe dollar sign will be ignored. Text specified in …þ ƒsingle quotes will work in either GPLOT3 or GPLOT11. If …þ ƒyou want to use character string variables in GPLOT3, …þ ƒspecify it as %REF(XNAME).) …þ ƒ …þ ƒ…CALL YNAMEƒ …(YNAME,LYNAME)ƒ …þ ƒ …þ ƒ…CALL GRAFƒ …(XORIG,XSTEP,XMAX,YORIG,YSTEP,YMAX)ƒ …þ ƒ(XORIG is the x-data value at the origin of the x-axis. …þ ƒXSTEP is the change in x-data value per axis division, …þ ƒand XMAX is the x-data value at the end of the AXIS. If …þ ƒ'SCALE' is used for XSTEP and/or YSTEP, GPLOT will …þ ƒcalculate appropriate values to use.) …þ ƒ …þ ƒ…CALL CURVEƒ …(XARRAY,YARRAY,NPNTS,IMARK)ƒ …þ ƒ(XARRAY and YARRAY are the arrays of x-data values and y- …þ ƒdata values, NPNTS is the number of data points in the …þ ƒarrays, and IMARK is an indicator of the data marker …þ ƒfrequency. If IMARK=0, no symbols will be plotted and if …þ ƒIMARK > 0 symbols will be plotted every IMARKth point. …þ ƒIf IMARK < 0 symbols will be plotted, but no curve will …þ ƒbe drawn.) …þ ƒ …þ ƒ…CALL ENDPLƒ …(IPLOT)ƒ …þ ƒ(ENDPL updates the plot and if the mode is interactive …þ ƒand the device is of type input/output, ENDPL pauses for …þ ƒthe user to view the plot. When the user types a RETURN, …þ ƒit closes and deactivates the workstation and zeros some …þ ƒof the plot parameters, so that AREA2D and GRAF must be …þ ƒcalled again to set up another plot…. ƒIf IPLOT is greater …þ ƒthan zero, information about the plot routine will be …þ ƒwritten in the lower left corner of the plot. If …þ ƒWorkstation Independent Segment Storage (WISS) is active …þ ƒand there is no hardcopy device active, the user will be …þ ƒasked if he wants a hardcopy of that plot frame.) …þ ƒ …þ ƒ…CALL GSTOPƒ  10..T....1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  …ÿ ƒTA simple plot created using the above routines is illustrated by Example 1 in the Appendix.    I…\1ƒ … Modifying the Plot LayoutƒIH H H …ÿ ƒTThe values of PAGEX and PAGEY set by the call to PAGE determine the aspect ratio of the plot. The axes lengths set by the call to AREA2D together with the page variables determine the sub plot area within the plot area. These values are used to calculate the normalization viewport in Normalized Display Coordinates (NDC) for the plot area and for the sub plot area. The workstation window and viewport are then calculated for these same transforms using the currently active workstation(s). When the data values at the axis extremes have been set by calls to GRAF or XGRAXS and YGRAXS, the data transform is calculated.   I…\2ƒ … Reducing the Plot SizeƒIH H H …ÿ ƒTGPLOT will generate the largest plot that can be produced on the workstation surface while maintaining the aspect ratio indicated by the two PAGE parameters. If you want to generate a smaller plot, you can control the size and position of the plot on the page by using a smaller subplot area and changing the plot origin.   I…\2ƒ … Changing the Plot OriginƒIH H H …ÿ ƒTGPLOT will try to center the sub plot area within the plot area. For special cases such as when you want to produce multiple plots on a page, you can use one of the following calls to change the sub-plot origin:  …ÿ ƒT…CALL PHYSOR(XPHYS,YPHYS)ƒ …ÿ ƒT(Where XPHYS and YPHYS are the coordinates of the origin of the sub-plot area with respect to the corner of the page)  …ÿ ƒT…CALL OREL(XOREL,YOREL)ƒ …ÿ ƒT(Where XOREL, YOREL is the offset of the sub-plot origin with respect to the previous origin)   I…\2ƒ … Creating Multiple Plots on a PageƒIH H H …ÿ ƒTCalls to change the plot origin are particularly useful when you want to create multiple subplots on a page. Each subplot except the last should be terminated with the call:  …ÿ ƒT…CALL ENDGR(IPLOT)ƒ …ÿ ƒ…T ƒ …ÿ ƒTThe call to ENDGR will terminate the current plot, but not eject a page so you can produce multiple plots on the same page. See Examples 3, 7, and 14 in the Appendix for ways of using this feature. Note in these examples that the call to AREA2D or YGRAXS together with the call to PHYSOR or OREL determines the portion of the page which will contain the plot.    I…\2ƒ … Clipping the PlotƒIH H H  …ÿ ƒTPoints lying outside the page window will always be clipped. To clip all points lying outside the …subplotƒ area defined by AREA2D, include the statement   …ÿ ƒT…CALL GRACE(0.0)ƒ  …ÿ ƒTThe default clipping can be restored by calling GRACE with an argument greater than 0.5. An alternative is to use the GKS routine GSCLIP to turn clipping on and off.    I…\2ƒ … Framing the Plot/Subplot AreasƒIH H H …ÿ ƒTBy default, GPLOT will draw a border around the plot area. To eliminate this plot border, make the call:  …ÿ ƒT…CALL NOBRDRƒ  …ÿ ƒTGPLOT also normally draws a frame around the subplot area with tick marks on both sides and on the top and bottom (unlike DISSPLA). The frame around the subplot area will normally be at the default line width, but can be made thicker with the following calls:  …ÿ ƒT…CALL FRAMEƒ  …ÿ ƒT…CALL THKFRM (THKNSS)ƒ  where THKNSS is approximately the thickness in inches. In calculating this, GPLOT assumes a nominal thickness of 0.01". An example of the use of these routines is given in Example Plot 2 in the Appendix. A value of THKNSS=0.04 means that the frame is approximately four times the normal thickness. If THKNSS is greater than or equal to 1.0 it is taken as a factor to multiply the nominal thickness, so THKNSS=4.0 would yield a frame four times the nominal thickness.   I…\2ƒ … Data TransformsƒIH H H …ÿ ƒTGPLOT defines three GKS transforms. They transform from the page or subplot area in inches or data units to the workstation viewport. The GKS Workstation viewport is always set to be the same as the GKS normalization window. The page transform attempts to produce the largest plot possible on the display surface without changing the aspect ratio of the plot. The subplot area within the page is defined by the x and y axes in the call to area2d. The origin of the subplot area with respect to the page area (in inches) is referred to as the physical origin. GPLOT provides routines to transform between data units and position with respect to the subplot area. These routines are function routines patterned after those in DISSPLA. To obtain the position of a coordinate point (XVAL,YVAL) in inches relative to the origin, use the calls:  …ÿ ƒT…XINCH = XPOSN (XVAL,YVAL)ƒ  …ÿ ƒT…YINCH = YPOSN (XVAL,YVAL)ƒ  To find the data value of a point at a given position on the plot, use the transforms:  …ÿ ƒT…XVAL = XINVRS (XINCH,YINCH)ƒ  …ÿ ƒT…YVAL = YINVRS (XINCH,YINCH)ƒ  These routines are particularly useful when doing input from a graphics workstation or when you need to label data points.    I…\1ƒ … Writing Text on the PlotƒIH H H …ÿ ƒTIt is often desirable to write additional text on the plot. This can be done with the GKS routine GTX or with one of the GPLOT routines. The GPLOT routines for writing text are the following:   10..T...L1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL CHRMSGƒ …(XPOS,YPOS,CSTRING)ƒ …þ ƒ …þ ƒ…CALL MESSAGƒ …(STRING,LSTRING,XPOS,YPOS)ƒ …þ ƒ …þ ƒ…CALL RLMESSƒ …(STRING,LSTRING,XDATA,YDATA)ƒ …þ ƒ …þ ƒ…CALL HEADINƒ …(STRING,LSTRING,HTMULT,NLINES)ƒ …þ ƒ …þ ƒ…CALL REALNOƒ …(ANUM,IPLACE,XPOS,YPOS)ƒ …þ ƒ …þ ƒ…CALL RLREALƒ …(ANUM,IPLACE,XDATA,YDATA)ƒ …þ ƒ …þ ƒ…CALL INTNOƒ …(INUM,XPOS,YPOS)ƒ …þ ƒ …þ ƒ…CALL RLINTƒ …(INUM,XDATA,YDATA)ƒ …þ ƒ  10..T....1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTCHRMSG is the basic GPLOT routine for text output and all the other GPLOT text routines call CHRMSG. CHRMSG has the same arguments as the GKS text output routine GTX, but CHRMSG includes the capability of switching fonts within the text string or changing character size or position with embedded instructions. This makes it easier to do subscripts, superscripts, special symbols, etc. Example plot 5 in the Appendix shows how subscripts, superscripts and Greek characters can be produced using these in-line switching capabilities. The other routines are included to emulate DISSPLA. The DISSPLA 10.5 text routines were based on an older FORTRAN standard which did not support character strings. …ÿ ƒTFor GPLOT3, STRING is a BYTE string of length LSTRING, or a character variable specified as %REF(STRING). For GPLOT11, STRING is a character string variable. Both GPLOT11 and GPLOT3 will accept a string constant in single quotes. If you are using routines with text strings and do not wish to count the length, you can end the string with a dollar sign ($) and set LSTRING=100. For GPLOT11 you can also specify LSTRING as 0. The parameter CSTRING used in CHRMSG is a character string so no string length needs to be passed if CHRMSG is used. …ÿ ƒTIn the above routines the text position XPOS and YPOS are in terms of axes units (inches or centimeters), and XDATA and YDATA are in terms of data units. …ÿ ƒTHEADIN is used to center lines of text above the subplot area, so no positioning is needed, but you must pass the total number of heading lines to be used in the variable NLINES. You can also expand the height of the heading characters above the default by setting HTMULT > 1.0. The last four routines are used for writing real numbers and integers on the plot. IPLACE is used to indicate the number of decimal places to use in writing real numbers on the plot. If IPLACE is negative, the number is written in exponent form.  …ÿ ƒTIt is sometimes useful to know the length of a text string written on a plot for text positioning, etc. The function calls XMESS, XINT, and XREAL can be used to get the length of a text string output by MESSAG, INTNO, RLINT, REALNO, or RLREAL with the current font and character height. They are called as follows:  …ÿ ƒT…XLENGTH = XMESS(LMESS,IMESS)ƒ  …ÿ ƒT…XLENGTH = XINT(INUM)ƒ  …ÿ ƒT…XLENGTH = XREAL(ANUM,IPLACE)ƒ   I…\2ƒ … Text Size and Orientationƒ…IHƒ H H …ÿ ƒTThe Height and angle of the text may be altered by calling the routines:   10..T...L1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL HEIGHTƒ …(HITE)ƒ …þ ƒ …þ ƒ…CALL ANGLEƒ …(ANG)ƒ …þ ƒ  10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. These routines affect the height and angle of all text written to the screen after they are called. Example plot 2 in the Appendix shows the effect of a call to ANGLE and Example plot 5 shows the use of HEIGHT.F The current version of DEC GKS produces software characters which are two-thirds of the requested height. The Postscript driver produces characters of the correct height, so mixing hardware and software characters on a postscript printer produces characters of differing heights.E …þ ƒ If calls to the GKS routines GSCHH (HITE) and/or GSCHUP (XVEC,YVEC) are mixed with these calls, they may produce unpredictable results unless you are sure what world coordinate transformation is being used at the time.   I…\2ƒ … Text FontsƒIH H H …ÿ ƒTDISSPLA provides a large number of software fonts and some of the DISSPLA font names have been included as valid calls in GPLOT for ease in conversion of graphics programs, but there may be little similarity in the appearance of the two fonts. The font names from DISSPLA which can be used include: …CARTOG, COMPLX, ƒ …DUPLX, FASHON, FUTURA, SCMPLX, SERIF, SIMPLX, SWISSB, SWISSL, ƒ …SWISSM, TRIPLX, GOTHIC, GREEK, MATHEMATICAL, RUSSIAN, SCRIPT, ƒ …SPECIAL, ƒand …STANDARDƒ. Some of these select an alphabet instead of a font style and thus must be generated in software. Others may have the desired effect on a Postscript printer, but have no effect on other devices. …ÿ ƒTThe actual fonts available are both device and GKS implementation specific. For complete control over the font style and precision, use the GKS call:  …ÿ ƒTCALL GSTXFP (FONTID,PRECIS)  where FONTID is an integer indicating the font to be selected, and PRECIS is an integer indicating the precision required. For highest precision, specify PRECIS = 2 (stroke precision). For medium precision, specify PRECIS = 1 (character precision), and for low precision, specify PRECIS = 0 (String precision). These precision constants are a part of the GKS standard, but the FONTID numbers are device and implementation specific.  …ÿ ƒTDEC has used negative numbers for all their fonts except the default font, FONTID = 1, to avoid conflict with future GKS standard font numbers. VAX GKS provides a number of software fonts which are available on any device. To draw text using software fonts requires that the processor calculate all the strokes to be made to draw each character and sends these vectors to the device. Hardware fonts are created by sending a font selection command to the device and then sending the ASCII character codes to the device. Using software fonts can increase the time taken to generate a plot by a factor of ten or more. For speed and efficiency it is always preferable to use hardware fonts. Software fonts will provide higher quality and placement precision unless you can design your graph for the hardware fonts available on a specific plotter or you are using a Postscript plotting device.  …ÿ ƒTPostscript plotters are able to generate a variety of fonts in any size and orientation. Postscript is recommended when you want to have higher quality plots, or any time you are going to need a lot of large or heavy text on the plot. Postscript plots can also be printed on a typesetter at even higher quality. DEC VAX-GKS supports a number of software fonts which are described in Appendix G of the DEC GKS Reference Manual. As mentioned, Postscript fonts can be drawn in any size and orientation. Since it is difficult to remember the font numbers, a routine has been included in GPLOT to allow selecting the fonts by name and attribute, using the call:  …ÿ ƒT…CALL FONTƒ …('font_name','font_attribute')ƒ,  where the font attributes are 'NORMAL', 'BOLD', 'SLANT' or 'ITALIC', and 'BOLD ITALIC'. The font names for the Apple Laserwriter Plus are shown in Table 6.1 with the font name written in the indicated style.       10...V...1.........2......V..3.......T.4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…Fontƒ…ÿ ƒT…Attributeƒ…ÿ ƒT…Sample Textƒ Helvetica…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Helvetica…ÿ ƒTBold…ÿ ƒTABCDEFGabcdefg Times Roman…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Times Roman…ÿ ƒTBold…ÿ ƒTABCDEFGabcdefg Times Roman…ÿ ƒTSlant…ÿ ƒTABCDEFGabcdefg Times Roman…ÿ ƒTBold Italic…ÿ ƒTABCDEFGabcdefg Palatino…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Bookman…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Helvetica NarrowTNormal…ÿ ƒTABCDEFGabcdefg Chancery…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Symbol…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg Dingbats…ÿ ƒTNormal…ÿ ƒTABCDEFGabcdefg   …ÿ ƒCTable 6.1 POSTSCRIPT Font Samples     10..T....1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  It should be noted that the Laserwriter Plus has more fonts than the regular Laserwriter, and other Postscript printers may have some differences in the fonts available.   I…\2ƒ … Instruction FontƒIH H H …ÿ ƒTThe advantage of using the GPLOT text routines instead of the GKS routine GTX for text output is that some capability for special formatting and font-switching within the string have been included. The routine …MXiALF (LALPHA,LCHAR), ƒwhere "i" can be 1- 6, can be used to define up to six special font-switching or instruction characters. In these routines LALPHA is a character or byte string giving the name of the font or character set to be used and LCHAR is a character which is used as a flag to activate the font change or instruction interpretation. Two special variations of …MXiALF ƒ(…BASALF ƒand …MIXALFƒ) have been defined which use the left and right parenthesis as their font switch flag characters, so they only require the parameter LALPHA. …ÿ ƒTIf LALPHA = 'INSTRUCTION' the text following the occurrence of the corresponding flag character will be interpreted as instructions until another flag character is found. The instructions which have been implemented are:    10..T....1...,T....2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  …ÿ ƒTEx…ÿ.......ƒTElevate text baseline a fraction "x" of the character height.  …ÿ ƒTLx…ÿ.......ƒTLower text baseline a fraction "x" of the character height.  …ÿ ƒTBi…ÿ.......ƒTBackspace "i" characters.  …ÿ ƒTHx…ÿ.......ƒTMultiply character height by factor "x".  …ÿ ƒTAx…ÿ.......ƒTMove by a fraction of character height "x".   The "x" above is either a real number or the letter "X". If the letter "X" is used the corresponding value will reset the variable to the default value. These instructions are interpreted by the subroutine ANLZIN which is called by CHRMSG. All the GPLOT text routines go through CHRMSG so may use these special features for font switching,etc. See Example Plot 5 in the Appendix to see how these instructions are used.    I…\1ƒ … Drawing AxesƒIH H H …ÿ ƒTA number of GPLOT routines are available for drawing axes. There are two routines for labelling the axes which are called as follows:  …ÿ ƒT…CALL XNAMEƒ …(XNAME,LNAME)ƒ  …ÿ ƒT…CALL YNAMEƒ …(XNAME,LNAME)ƒ  where XNAME and YNAME are the labels for the axes and LNAME is the number of characters in the name. If you don't want to count characters, you can add a '$' at the end of BNAME and set LNAME = 100. If XNAME and YNAME are specified as variables instead of text constants in single quotes, they should be BYTE variables for GPLOT3 and CHARACTER variables for GPLOT11. The axes which are generated will have labels and numbers on the bottom and left axes, and will have axes with tic marks on the right and top. This differs from the DISSPLA convention which places the tic marks on the outside by default. Additional axes may be drawn by the calls  …ÿ ƒT…CALL XGRAXSƒ …(XORIG,XSTEP,XMAX,XAXIS,XNAME,LXNAME,XPOS,YPOS)ƒ  …ÿ ƒT…CALL YGRAXSƒ …(YORIG,YSTEP,YMAX,YAXIS,YNAME,LYNAME,XPOS,YPOS)ƒ  The arguments have the same meanings here as described for GRAF, XNAME, and YNAME, except that if LXNAME or LYNAME are negative the numbers and labels will be drawn on the opposite side of the axes. Example Plot 7 shows how YGRAXS can be used together with OREL or PHYSOR to produce multiple subplots on a page. The values at the axis tic marks can be set to integers by the calls  …ÿ ƒT…CALL XINTAXƒ  …ÿ ƒT…CALL YINTAXƒ  …ÿ ƒT…CALL INTAXSƒ  It should be noted that the values XSTEP and YSTEP can be replaced by the string 'SCALE' to have the program calculate appropriate step sizes. If you want the tic marks to go to the outside, you can reverse them with the following calls:  …ÿ ƒT…CALL XREVTKƒ  …ÿ ƒT…CALL YREVTKƒ  The axes drawn will join at the XORIG and YORIG values, but the axes can be made to cross at x = 0.0, y = 0.0 by calling …CROSSƒ. This is sometimes useful when one or both axes start at negative values and go to positive.  …ÿ ƒTBy default the axis labels will be horizontal on the x-axis and vertical on the y-axis. The angle of these labels can be changed with the routines:  …ÿ ƒT…CALL XAXANG(ANG)ƒ  …ÿ ƒT…CALL YAXANG(ANG)ƒ  where ANG is the angle from the horizontal in degrees. Example Plot 2 in the Appendix shows how these routines can be used to modify the tic marks and axis labels.  Another option is to eliminate the labels at the beginning or the end of the axes, or both. This can be done with the calls:  …ÿ ƒT…CALL XAXEND (option)ƒ  …ÿ ƒT…CALL YAXEND (option)ƒ  where "option" is one of the following values: 'NOFIRST','NOLAST', or 'NOENDS'.   I…\2ƒ … Linear AxesƒIH H H …ÿ ƒTThe basic graph set up routine is GRAF as described previously. GRAF uses data units to define the origin, step size and ending values for the axes. There are two other routines for setting up linear axes which use inches instead of data units for one of the axes. They are:  …ÿ ƒT…CALL XGRAF (XORIG,XSTP,XMAX,YORIG,YSTEP)ƒ  …ÿ ƒT…CALL YGRAF (XORIG,XSTEP,YORIG,YSTP,YMAX)ƒ  where XSTEP and YSTEP are given in inches and the other arguments are the same as for the GRAF routine. There is also a routine for setting up a plot with axes labelled with a user specified text string instead of with numbers. These routines are:  …ÿ ƒT…CALL XLABGR (LXARAY,IXWORD,IXTOT,YORIG,YSTP,YMAX)ƒ  …ÿ ƒT…CALL YLABGR (XORIG,XSTP,XMAX,LYARAY,IYWORD,IYTOT)ƒ   I…\2ƒ … Logarithmic AxesƒIH H H …ÿ ƒTLogarithmic axes can be used instead of linear axes by replacing the call to GRAF with one of the following calls:   10..T...L1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL XLOGƒ …(XORIG,XCYCLE,YORIG,YSTEP)ƒ …þ ƒ …þ ƒ…CALL YLOGƒ …(XORIG,XSTEP,YORIG,YCYCLE)ƒ …þ ƒ …þ ƒ…CALL LOGLOGƒ …(XORIG,XCYCLE,YORIG,YCYCLE)ƒ …þ ƒ  10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTXLOG and YLOG give semilog plots and LOGLOG does loglog plots. In these routines XCYCLE and YCYCLE are the cycle lengths in axis units, and the other parameters are as in GRAF. Example plot 3 in the Appendix shows the effect of the different logarithmic axes.   I…\2ƒ … Producing Grids and/or Tick MarksƒIH H H …ÿ ƒTTick marks are normally generated at each major axis division. To produce additional tick marks, make the following calls:   10..T...T1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒT…CALL XTICKS(ITICKS)ƒ  …ÿ ƒT…ÿ ƒT…CALL YTICKS(ITICKS)ƒ  where ITICKS is the total number of tick marks per axis step. These routines are demonstrated in Example Plot 2 in the Appendix.  …ÿ ƒTTo produce a grid on the plot, use one of the following subroutine calls:   10..T...L1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL GRIDƒ …(NXGRID,NYGRID)ƒ …þ ƒ …þ ƒ…CALL DOTGRIDƒ …(NXGRID,NYGRID)ƒ …þ ƒ  10..T...T1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTIn these grid routines NXGRID and NYGRID are the numbers of grid lines per division on the x and y axes. DOTGRID is a special grid which produces the dots each one-fifth of an axis division. This is slow, but can be used for interpolation. A dotted grid can also be produced by GRID if the line type is changed to dotted before calling GRID, but the dots will not be synchronous with the axis divisions.    I…\1ƒ … Drawing CurvesƒIH H H …ÿ ƒTThe basic routine for drawing curves in GPLOT is CURVE, as indicated in the basic plot routines section. This routine will draw curves and/or place markers at data points.   I…\2ƒ …Error Barsƒ…IHƒ H H …ÿ ƒTIt is often desirable to put error bars on the data points being plotted. Three calls have been provided in GPLOT which will draw error bars for the x or y uncertainty or both. Use one of the following calls in place of the call to CURVE and supply the array(s) of error values to be used. The calls are:  …ÿ ƒT…ÿ ƒT…CALL EYCRVƒ …(XARRAY,YARRAY,NPTS,IMARK,EYARY)ƒ  …ÿ ƒT…ÿ ƒT…CALL EXCRVƒ …(XARRAY,YARRAY,NPTS,IMARK,EXARY)ƒ  …ÿ ƒT…ÿ ƒT…CALL EXYCRVƒ …(XARRAY,YARRAY,NPTS,IMARK,EXARY,EYARY)ƒ  The default error bar will be a line, but this can be changed to a line with bars on the end by the call:  …ÿ ƒT…ÿ ƒT…CALL EMARKƒ …(2)ƒ   I…\2ƒ … Line TypesƒIH H H …ÿ ƒTGPLOT supports the following calls to set the line-type to be used in generating curves:   10..T...L1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL SOLIDƒ …þ ƒ …þ ƒ…CALL DOTƒ …þ ƒ …þ ƒ…CALL DASHƒ …þ ƒ …þ ƒ…CALL CHNDOTƒ …þ ƒ …þ ƒ…CALL CHNDSHƒ (DEC GKS extension not supported prior to DEC …þ ƒGKS 4.0) …þ ƒ  10..T..T.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTThe thickness of the lines drawn with the curve routines will be the default value for the graphics device unless they have been thickened by a call to THKCRV. The call is:  …ÿ ƒT…CALL THKCRV (THKNSS)ƒ  where if THKNSS @> 1.0 it is a factor which multiplies the nominal line width. If THKNSS < 1.0 it is approximately the line thickness in inches, although this is somewhat device dependent. THKCRV does not affect the line thickness of lines drawn by other routines.   I…\2ƒ … ColorsƒIH H H …ÿ ƒTWhen plotting on a color device, it is possible to choose colors by name using the call:  …ÿ ƒT…CALL NEWCLR ('color')ƒ  Color names which are recognized include FOREGROUND, BACKGROUND, RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW, BLACK, and WHITE. It will also recognize other colors such as BROWN, GREY, GRAY, PURPLE, AQUA, and PINK for certain devices. The color set by a call to NEWCLR will affect text, markers, and filled areas as well as lines. Since colors are device dependent they will appear differently on different devices, and some trial and error will probably be necessary. Example Plots 6, 8, and 10 demonstrate the use of color if they are run on a color device. …ÿ ƒTSome devices, such as Postscript printers and VAXstations, permit writing in the background color as well as the foreground color, allowing you to erase an area with the background color before writing over it in another color.  …ÿ ƒTFor more control over colors, you can use the GKS call to set the color representation (GSCR) together with the calls to set color index for the text, polyline, polymarker, and fill area (GSTXCI, GSPLCI, GSPMCI, GSFACI). See the GKS documentation for more details of these calls. You should be aware, however that some GPLOT routines call these GKS color routines with a color index stored in common.   I…\2ƒ … Data MarkersƒIH H H …ÿ ƒTThirty different data markers are supported by GPLOT for marking data points, with most of the first 18 being the same as those produced by DISSPLA. The exceptions are symbols 11, 14, and 17. Symbols 11 and 14 appear slightly different because triangles are centered on the center of mass in GPLOT instead of at the half height of the triangle as in DISSPLA. GPLOT uses a different symbol for marker 17 because DISSPLA duplicates markers 17 and 0. …ÿ ƒTThe symbols automatically increment when multiple curves are drawn on the same plot, but specific markers may be selected by the call   …ÿ ƒT…ÿ ƒT…CALL MARKERƒ …(n)ƒ  The symbols are plotted at a default size unless a marker scaling factor is applied by the call:  …ÿ ƒT…ÿ ƒT…CALL SCLPICƒ …(PICFAC)ƒ  where PICFAC is the marker height scale factor. In some cases different markers will be different sizes because some are drawn by GPLOT subroutines and others are furnished by DEC VAX GKS. Markers furnished by DEC VAX GKS will also be different sizes on different devices because marker size scaling is in terms of the default marker size for the device. If this causes a problem, you can select the markers drawn by GPLOT subroutines. Markers 2,8,10-15, and 22-24 are generated by GPLOT. The other markers are generated by DEC VAX GKS and the size will vary from device to device. There is also a bug in DEC VAX GKS in marker clipping for some devices, so errors may result when you attempt to draw one of those markers outside the clipping rectangle. …ÿ ƒTThe first 22 available markers are illustrated in Example 11 in the Appendix.    I…\2ƒ … Interpolation RoutinesƒIH H H …ÿ ƒTA number of routines have been included which allow interpolation before drawing the curve through the data points. The default is to draw straight lines connecting the points supplied to the curve routine. If the call to the curve routine is preceded by a call to an interpolation routine, a different curve will be drawn for each of the other methods. The interpolation routines which can be called include:  …ÿ ƒT…CALL LINEARƒ  …ÿ ƒT…CALL BARS(BARWTH)ƒ  …ÿ ƒT…CALL PARA3ƒ  …ÿ ƒT…CALL PARA5ƒ  …ÿ ƒT…CALL POLY3ƒ  …ÿ ƒT…CALL POLY5ƒ  …ÿ ƒT…CALL PSPLINƒ  …ÿ ƒT…CALL RASPLN(TENSN)ƒ  …ÿ ƒT…CALL SPLINEƒ  …ÿ ƒT…CALL STEPƒ  Here BARWTH is the ratio of the bar width to data interval, and TENSN is a parameter that determines the degree of smoothing by the RASPLN routine. A sample of the effects of some of these interpolation routines is shown in Example 7 in the Appendix.    I…\1ƒ … LegendsƒIH H H …ÿ ƒTGraphs may be labelled with legend routines similar to those used by DISSPLA except that the GPLOT routines keep track of line color and type as well as symbol type for use in the legend. A legend may be produced as follows:F Note that this example is not applicable to the old version (GPLOT3).E …þ ƒ   10.....L.1..T......T.........3.......C.4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…PARAMETER NWORDS=100ƒ …þ ƒ…INTEGER IPKRAYƒ …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ …þ ƒ…CALL MYLEGNƒ …('Legend Heading$',100)ƒ …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…CALL LINESƒ …('Curve 1 Label$',IPKRAY,1)ƒ …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…CALL LINESƒ …('Curve 2 Label$',IPKRAY,2)ƒ …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…ÿ ƒT. …þ ƒ…CALL LEGENDƒ …(IPKRAY,NCURVE,XPOS,YPOS)ƒ …þ ƒ  10..T..T.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. Here LMAX is the maximum number of characters in a legend line, NCURVE is the total number of curves, and the last argument in the call to LINES is ICURVE, the curve index. You may want to position the legend where it will not interfere with other curves and text because GPLOT does not always blank the plot as DISSPLA does and the graph can overwrite the legend. For devices that can write in the background color the legend area will be cleared before the legend is written. A complete example showing how to produce a legend on a plot is included in Example Plots 6 and 11 in the Appendix.    I…\1ƒ … Vectors With and Without ArrowheadsƒIH H H …ÿ ƒTIf you wish to draw vectors without using the CURVE calls, GPLOT provides routines to draw vectors in either axes units or data units. They may also include various types of arrow heads if desired. The calls for these routines are:  …ÿ ƒT…ÿ ƒT…CALL VECTORƒ …(XFROM,YFROM,XTO,YTO,IVEC)ƒ  …ÿ ƒT…ÿ ƒT…CALL RLVECƒ …(XFROM,YFROM,XTO,YTO,IVEC)ƒ   IVEC is a four digit integer specifying the arrowhead to be used. The first digit gives the ratio of width to length and may have values from 0 to 5. The second digit gives the arrowhead size from 0 to 6. The third digit specifies the type of arrowhead:  …ÿ ƒT0 -> Solid …ÿ ƒT1 -> White …ÿ ƒT2 -> Open …ÿ ƒT3 -> Closed  The last digit specifies the location of the arrowheads:  …ÿ ƒT0 -> None …ÿ ƒT1 -> at (XTO,YTO) …ÿ ƒT2 -> at both ends …ÿ ƒT3 -> at both ends, pointing out …ÿ ƒT4 -> at both ends, pointing to (XTO,YTO)  …ÿ ƒTVectors can also be drawn using the following routines to define a starting point and subsequent points to be connected.  …ÿ ƒT…CALL STRTPT(X0,Y0)ƒ  …ÿ ƒT…CALL CONNPT(XI,YI)ƒ  …ÿ ƒTVectors will be drawn using the nominal line width for the graphics device unless THKVEC has been called. To change the line width of lines drawn with vector routines, use the call:  …ÿ ƒT…CALL THKVEC(THKNSS)ƒ  where the line width used to draw the vector will be THKNSS times the nominal linewidth if THKNSS @> 1.0 or will be approximately THKNSS inches thick if THKNSS < 1.0.    I…\1ƒ … Graphic PrimitivesƒIH H H …ÿ ƒTDEC VAX-GKS provides graphic primitives for drawing arcs, circles, ellipses, and rectangles. It also provides primitives for filling these figures. These have been used by GPLOT to produce easy to use routines for drawing graphics primitives. Some of these correspond in name and calling parameters with DISSPLA routines for blanking areas, however the GPLOT routines only draw the figures, and don't do blanking in most cases. The routine CLRREC can be used to erase a rectangular area on devices which provide this capability (i.e. the HDS graphics terminal, VAXstation, DECWindows terminals, Postscript printers). The filling of these primitives is dependent on the state of the GKS Fill Area Constants at the time of the call. For some devices an area can be erased by setting the Fill Area Interior Style to solid and the Fill Area Color Index to the background color. See Examples 8-10 to see how the filling is controlled by these variables.   10..T..L.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL BLRECƒ …(XORG,YORG,WIDE,HIGH,FRM)ƒ …þ ƒ …þ ƒ…CALL BLTRECƒ …(XORG,YORG,WIDE,HIGH,ANG,FRM)ƒ …þ ƒ …þ ƒ…CALL BLCIRƒ …(XORG,YORG,RADIUS,FRM)ƒ …þ ƒ …þ ƒ…CALL BLELIPƒ …(XORG,YORG,RADX,RADY,ANG,FRM)ƒ …þ ƒ …þ ƒ…CALL BLPOLYƒ …(XARAY,YARAY,NPTS,FRM)ƒ …þ ƒ …þ ƒ…CALL BLSLIC (XORG,YORG,RADIUS,THETA1,THETA2,FRM,IARC)ƒ …þ ƒ…CALL ARC (XORG,YORG,RADIUS,THETA1,THETA2,ICLS,FRM)ƒF …þ ƒGPLOT11 only.E …þ ƒ …þ ƒ …þ ƒ…CALL ELARC ƒ …þ ƒ…(XORG,YORG,RAD1,RAD2,ANG,THETA1,THETA2,FRM,IARC)ƒ …þ ƒ…CALL ELPARC ƒ …þ ƒ…(XORG,YORG,RAD1,RAD2,ANG,THETA1,THETA2,ICLS,FRM)ƒF …þ ƒGPLOT11 only.E …þ ƒ …þ ƒ  10..T..T.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. where the first six routines correspond to DISSPLA routines except the call to BLSLIC has an optional extra parameter, IARC, to indicate the type of circular arc to be drawn. The three valid values of IARC are GATOPN=1, GATPIE=2, and GATCHRD=3 to specify if the arc should be open, pie shaped or chord shaped. ICLS is similar to IARC, except it is a one of the following character strings: 'NONE', 'SLICE', or 'CHORD'. If the file 'SYS$LIBRARY:GKSDEFS.BND' is included by the drawing program, the symbolic names for these parameters may be used, otherwise use the numbers. The routine to draw elliptic arcs, ELARC, is similar to the routine for drawing circular arcs, BLSLIC, except it requires both a major and minor radius for the ellipse. Example plots 8-10 demonstrate the use of these graphic primitive routines. There is a bug in the DEC GKS Postscript driver which causes the ARC and ELPARC routines to work incorrectly on Postscript printers.    I…\1ƒ … Bar GraphsƒIH H H …ÿ ƒTGPLOT contains routines to emulate the DISSPLA routines for drawing vertical and horizontal bars. These subroutine calls are:   10..T..L.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …þ ƒ…CALL VBARSƒ …(XARAY,Y1ARAY,Y2ARAY,NPTS)ƒ …þ ƒ …þ ƒ…CALL HBARSƒ …(X1ARAY,X2ARAY,YARAY,NPTS)ƒ …þ ƒ …þ ƒ…CALL BARPATƒ …(ISTYLE)ƒ …þ ƒ …þ ƒ…CALL BARWIDƒ …(BARWTH)ƒ …þ ƒ  10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTThese work as the DISSPLA routines except GPLOT patterns are based on the GKS standard patterns and there are only nine different patterns. Example 4 in the Appendix demonstrates the use of these routines.    I…\1ƒ … Contouring RoutinesƒIH H H …ÿ ƒTGPLOT contains several routines for generating contour plots. The relevant routines are …CONMAKƒ,… CONLINƒ, and …CONTURƒ. CONMAK makes the contour lines and saves them in its internal data structures. CONLIN is used to set up various line styles for the contour lines of different levels. CONTUR actually plots the contour lines made by CONMAK according to the line styles established by CONLIN. The call  …ÿ ƒT…CALL CONMAKƒ …(w, nx, ny, zIncrement) ƒ  builds contour lines for a rectangular array of data values, w( , ). It is assumed that w is dimensioned as w(nx,ny). w(i,j) should contain the data value corresponding to the point (xi, yj) of a rectangular grid of points (xi,yj), i = 1,...,nx, j = 1,...,ny. The argument zIncrement gives the increment between contour levels. Alternatively, zIncrement can also be the character string constant 'SCALE', in which case CONMAK will choose rounded levels between the largest and smallest values in w( , ) at which to draw contour lines. In either case there will be a constant increment between contour lines, call it INCR, and contour lines will be calculated for all Z levels of the form   …ÿ ƒTK*INCR, K = ...,-1, 0, 1, ...   which are between the largest and smallest values stored in w( , ). The call  …ÿ ƒT…CALL CONLINƒ …(LineNum, MODE, 'NOLABELS', IThick, 1) ƒ  sets up the characteristics to be used when drawing the contour lines. LineNum is the "number" of the contour line whose characteristics are to be set. The correspondence between the contour level K*INCR and LineNum is  …ÿ ƒTLineNum = K MOD nLines  where nLines is the total number of line characteristics set by calls to CONLIN.  …ÿ ƒTMODE may be one of    10......T1.......T.2.B.......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT'SOLID'ÿ T--ÿ Tuse a solid line  …ÿ ƒT'DOT'…ÿ ƒT--ÿ Tuse a dotted line …ÿ ƒT'DASH'…ÿ ƒT--ÿ Tuse a dashed line …ÿ ƒT'CHNDOT'T--ÿ Tuse a chain dotted line …ÿ ƒT'CHNDSH'T--ÿ Tuse a chain dashed line …ÿ ƒT'MYCON'ÿ T--ÿ Tuse line characteristics as computed by the …þ ƒuser supplied subroutine MYCON  10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  …ÿ ƒTThe first five of these values select the specified line styles. If MODE is 'MYCON', the user must provide a subroutine by that name which will set the line characteristics at run time. The use of MYCON is explained more fully below.  …ÿ ƒTThe argument IThick is an integer specifying a thickness multiplier for line LineNo. Specifically, if IThick = 3, a line three times thicker than the standard line width will be used.  …ÿ ƒTThe remaining two arguments 'NOLABELS' and 1 must be passed in as shown, but have no effect on the resulting plot. The routine  …ÿ ƒT…CALL CONTURƒ …(nLines, 'NOLABELS', DrawFlag) ƒ  draws the contour lines. The argument nLines must be the total number of line characteristics set by calls to CONLIN.   …ÿ ƒTThe argument DrawFlag must be either of the character strings 'DRAW' or 'NODRAW'. This determines whether each contour line will be drawn or not drawn by default. 'NODRAW' is only useful in conjunction with the user supplied routine MYCON. MYCON can selectively permit lines at various levels to be drawn in case the default is set to 'NODRAW'.  …ÿ ƒTThe remaining argument 'NOLABELS' must be passed in as shown, but has no effect on the resulting plot.  …ÿ ƒTIf the MODE 'MYCON' was selected for a particular line characteristic, then the user MUST supply a subroutine MYCON (RArray,IArray) which will be called by CONTUR before a contour is plotted using that characteristic. In this way MYCON can change the appearance of particular contour lines. The two arguments of MYCON are arrays:   REAL RArray(2)  INTEGER IArray(9)   …ÿ ƒTCurrently, the only positions in the arrays that are used are:    10..T....1..T......2......B..3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒTRArray(1) --TContains the Z-level of the current …þ ƒcontour line being drawn.   …ÿ ƒT…ÿ ƒTIArray(1) --TContains the value of current curve …þ ƒthickness multiplier. This may be …þ ƒchanged depending on the Z-level to …þ ƒhighlight specific levels if desired.  …ÿ ƒT…ÿ ƒTIArray(9) --TContains the default curve drawing flag …þ ƒvalue.  T…ÿ ƒT…ÿ ƒT0 = 'NODRAW' …ÿ ƒT…ÿ ƒT…ÿ ƒT1 = 'DRAW' …ÿ ƒT…ÿ ƒT…ÿ ƒTThis may be changed to selectively omit …þ ƒor include various Z-levels.    10..T....T....T....T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTExample 13 in the Appendix illustrates the use of these routines.    I…\1ƒ … 3 Dimensional Plottingƒ…IHƒ H H …ÿ ƒTGPLOT now includes routines for drawing 3-Dimensional vectors, curves and surfaces. The 3-Dimensional objects are drawn in a 3D region called the "workbox" which can be viewed from various positions outside the workbox.  …ÿ ƒTTo use the 3-Dimensional plotting features in GPLOT, your program must first set up the page and subplot area as for 2- Dimensional plots. The 3D workbox will be projected into the subplot area specified in the call to AREA2D. The projection used is determined from the 3D workbox and various viewing parameters as described in the next two subsections. Meaningful defaults for the workbox and viewing parameters are provided and the subroutines in the next two sections may be omitted if the defaults are acceptable.    I…\2 Setting the "workbox"ƒ…IHƒ H H …ÿ ƒTThe 3D workbox can be specified using the routines Volm3D or Axes3D. Specifically, the call  …ÿ ƒT…ÿ ƒT…CALL Volm3D( xSize, ySize, zSize ) ƒ  would set the 3D workbox to extend from zero to xSize in the x direction, from zero to ySize in the y direction, and from zero to zSize in the z direction. These values adjust the 3D aspect ratios of the resulting plots. If all three parameters are equal, the workbox will appear cubical. If zSize is much smaller than xSize and ySize, the resulting workbox will be quite flat. The workbox establishes a coordinate system called the "absolute 3D" coordinate system.  …ÿ ƒTNames can be applied to the axis using the calls  …ÿ ƒT…ÿ ƒT…CALL X3NAME( LxName, IxName )ƒ …ÿ ƒT…ÿ ƒT…CALL Y3NAME( LyName, IyName )ƒ …ÿ ƒT…ÿ ƒT…CALL Z3NAME( LzName, IzName )ƒ  in which the parameters have the same effect as in the corresponding 2D routines XNAME, YNAME.  …ÿ ƒTThe above operations can be combined into one call to the routine Axes3D as shown:  …ÿ ƒT…ÿ ƒT… CALL Axes3D( LxName, IxName, LyName, IyName, LzName,ƒ …ÿ ƒT…ÿ ƒT1…ÿ ƒT…IzName, xSize, ySize, zSize )ƒ  The default workbox size is 1.0 X 1.0 X 1.0 with blank labels. If these defaults are satisfactory, calls to the above routines may be omitted. However, if these routines are used, they must be used BEFORE Graf3D is called.    I…\2 Setting the Viewing Parameters.ƒ…IHƒ H H …ÿ ƒTOnce the workbox has been set up, the observer's position and the point at which the observer is looking can be specified in one of several ways. The observer's position is called the Center Of Projection or COP. The point at which the obsever is looking is called the View Reference Point or VRP.  To set the COP, use one of the calls:  …ÿ ƒT…ÿ ƒT…CALL VuAbs ( xAbs, yAbs, zAbs )ƒ …ÿ ƒT…ÿ ƒT…CALL VuAngl( Phi, Theta, Radius )ƒ …ÿ ƒT…ÿ ƒT…CALL View ( x3, y3, z3) ƒ  The parameters xAbs, yAbs and zAbs specify the COP in terms of the "absolute 3D" coordinate system determined by the workbox. The parameters x3, y3 and z3 specify the COP in terms of the "relative 3D" coordinate system that will be placed on the workbox when Graf3D is called.   The parameters to VuAngl specify the COP relative to the VRP as follows:   10..T....1..T..B...T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTPhi…ÿ ƒT-ÿ Tspecifies the angle in the xy-plane between the …þ ƒpositive x axis and the projection of the ray from …þ ƒVRP to COP  …ÿ ƒTTheta…ÿ ƒT-ÿ Tspecifies the angle between the ray from VRP to …þ ƒCOP and the xy-plane.  …ÿ ƒTRadiusÿ T-ÿ Tspecifies the distance from the VRP to the COP in …þ ƒabsolute 3D coordinates.   10....B..1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. NOTE:TThe default COP is at ( -1.5, -1.5, 1.5 ) in absolute 3D …þ ƒcoordinates. If a program specifies the COP, it should be …þ ƒoutside of the 3D workbox. IF the specified COP is too …þ ƒclose to the workbox, GPlot will move it so that the …þ ƒdistance between it and the center of the work box is …þ ƒat least 1.5 times the length of the diagonal of the …þ ƒworkbox. If the specified COP is more than 20 times the …þ ƒworkbox diagonal away, GPLOT will use 20 times the workbox …þ ƒdiagonal.   To set the VRP, use one of the calls:   10..T....T....T....T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒT…CALL FclAbs( xAbs, yAbs, zAbs )ƒ …ÿ ƒT…ÿ ƒT…CALL FclAng( Phi, Theta, Radius )ƒ …ÿ ƒT…ÿ ƒT…CALL FclPt ( x3, y3, z3) ƒ  10....T..1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  The parameters to FclAbs and FclPt specify the VRP in terms of the "absolute 3D" and "relative 3D" coordinates respectively.  The parameters to FclAng specifiy the VRP relative to the COP as follows:    10..T....1..T..B...T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTRadiusÿ T-ÿ Tspecifies the distance from the COP to the VRP in …þ ƒabsolute 3D coordinates.  …ÿ ƒTTheta…ÿ ƒT-ÿ Tspecifies the angle between the ray from COP to …þ ƒVRP and the xy-plane.  …ÿ ƒTPhi…ÿ ƒT-ÿ Tspecifies the angle in the xy-plane between the …þ ƒpositive x axis and the projection of the ray from …þ ƒCOP to VRP.   10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. FclAng should be called after VuAbs, or View have set the position of the COP as desired.   10....B..1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. NOTE:TThe default VRP is at ( 0.5, 0.5, 0.5 ) in absolute 3D …þ ƒcoordinates. If a program specifies the VRP, it should lie …þ ƒin the 3D workbox. IF the specified VRP lies outside of …þ ƒthe workbox, GPlot will move it into the 3D workbox.   10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. Ordinarily, GPLOT will adjust the projection of the workbox onto the screen so that the entire workbox is visible. If desired, a program may adjust the projection so that less of the workbox is visible in order to "zoom" in on one part of a 3D object. This can be done using the call   10..T....T....T....T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒT…CALL VisAng( Angle )ƒ  Angle specifies the angle at the COP that is subtended by the virtual screen on which the 3D world is projected. If Angle is made quite small, the effect is to "zoom" in on a portion of the workbox.   10.....B.1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. NOTE:ÿ TThe GPLOT implementation of VisAng differs from the same …þ ƒnamed routine in DISSPLA. GPLOT always assumes a square …þ ƒvirtual screen and so only one is specified whereas …þ ƒDISSPLA allows a rectangular screen specified by two …þ ƒangles.  10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.    I…\2 Establishing a "relative" coordinate systemƒIH H H …ÿ ƒTThe 3D workbox will be given a relative 3D coordinate system by a call to Graf3D. Graf3D actually builds the projection as determined by the workbox and other viewing parameters and draws the axis system. Consequently, GRAF3D MUST be called AFTER the routines that establish the workbox and viewing parameters mentioned above, but BEFORE any routines to draw 3D objects given in the next section. Graf3D is called as follows:   10......T1.........2..T......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT… CALL Graf3D(ƒT…x3Orig, x3Step, x3Max,ƒH …ÿ ƒT1…ÿ ƒT…y3Orig, y3Step, y3Max,ƒH …ÿ ƒT2…ÿ ƒT…z3Orig, z3Step, z3Max )ƒ  10..T...TT.........2.T.......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  …ÿ ƒTThe parameters are interpreted in the same way as the parameters to the 2D routine GRAF.  …ÿ ƒTAs with the 2D graf routines, many variations on the appearance of the axes are allowed. This is accomplished using the calls   10..T....T.........2.T.......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒT…CALL zIntAxƒ …ÿ ƒT…ÿ ƒT…CALL zTicks( iTicks )ƒ …ÿ ƒT…ÿ ƒT…CALL zRevTkƒ …ÿ ƒT…ÿ ƒT…CALL zAxCtrƒ …ÿ ƒT…ÿ ƒT…CALL zAxEnd( Flag )ƒ …ÿ ƒT…ÿ ƒT…CALL zNoNumƒ …ÿ ƒT…ÿ ƒT…CALL zAxAng( Angle )ƒ …ÿ ƒT…ÿ ƒT…CALL zLabGr( LabelList, LabelLength, NLabels )ƒ  The corresponding 2D calls such as xIntAx, yNoNum, etc., will also affect the appearance of the 3D axis system.  The effect of these calls is generally similar to the corresponding 2D GPLOT and DISSPLA calls. Note however that there are small differences in the interpretation of some of the parameters between the 2D and 3D routines. For example, the default direction for tick marks in 3D is directed outward from the workbox. Also, the rotation Angle specified in xAxAng, yAxAng and zAxAng will be interpreted as a rotation from a "normal" orientation which is parallel to the axis with the top of the letters pointed towards the axis. However, as the viewing parameters are changed, this would occasionally leave some of the lettering oriented generally downward. GPLOT calculates the orientation of the lettering and if it is "upside down" the lettering is rotated by 180 degrees.    I…\2 3D OutputƒIH H H …ÿ ƒTGPLOT provides 3 dimensional vectors, curves, and surfaces using the calls:   10......T1.........2..T......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT… CALL Vectr3(ƒT…xAbsFr, yAbsFr, zAbsFr,ƒ …ÿ ƒT1…ÿ ƒT…xAbsTo, yAbsTo, zAbsTo, IVEC ) ƒ  …ÿ ƒT… CALL RlVec3(ƒT…xFrom, yFrom, zFrom,ƒ …ÿ ƒT1…ÿ ƒT…xTo, yTo, zTo, IVEC ) ƒ  …ÿ ƒT… CALL Curv3D( xAray, yAray, zAray, NPts, IMark )ƒ  …ÿ ƒT… CALL Surmat( ZMat, IXPts, IXDim, IYPts, IYDim, WkArea )ƒ   10..T....T.........2..T......3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTThe vector and curve routines are analogous to the corresponding 2D routines. The parameters to Vectr3 specify 3D positions in "absolute 3D" coordinates whereas the parameters to RlVec3 and Curv3D specify the coordinates in terms of the "relative" coordinate system set up by the call to Graf3D.     …ÿ ƒT3D surfaces are drawn using the routine Surmat. The parameters to Surmat are:  10..T....1T....B...T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  …ÿ ƒTZMatÿ T--…ÿ ƒTReal array with IxDim rows and IyDim columns, …þ ƒcontaining the z values of a grid of points …þ ƒdefining the surface. The z values are specified …þ ƒin terms of "relative" coordinates.  …ÿ ƒTIXPtsT--…ÿ ƒTThe increment between successive rows of ZMat that …þ ƒare to be used in drawing the surface. For …þ ƒexample, if IXPts = 2, Surmat will only use the …þ ƒdata from alternate rows of ZMat.  …ÿ ƒTIYPtsT--…ÿ ƒTThe increment between successive columns of ZMat …þ ƒthat are to be used in drawing the surface. For …þ ƒexample, if IYPts = 3, Surmat will only use the …þ ƒdata from every third column of ZMat.  …ÿ ƒTIxDim, …ÿ ƒTIyDimT--…ÿ ƒTThe dimensions of the array ZMat  …ÿ ƒTWkArea…ÿ ƒT--ÿ TNot used, but retained for compatability with …þ ƒDISSPLA.   10..T....1T........T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTNote that the x and y coordinates of the points on the surface are not specified directly in the call to Surmat. It is assumed that ZMat contains the Z-values of the surface evaluated on a grid of points (x,y) that are evenly spaced in the x and y directions. By default the ranges of x and y values of the data points are assumed to be the same as the ranges specified in the call to Graf3D. These default ranges can be changed with the call   10..T....T.........T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒT…ÿ ƒT…CALL SurSze( XMin, XMax, YMin, YMax ) ƒ  which specifies the new range of x and y values to be associated with the z values in ZMat. This will NOT change the calibrations on the axes, or alter the "relative" coordinate system specified in Graf3D, but will adjust the position and shape of the surface relative to the workbox.  …ÿ ƒTIf a surface is to be constructed from data values that correspond to points (x,y) that do not form a regular grid of points, some preprocessing of the surface is necessary. GPlot provides the routines BGNMAT, MDFMAT, GETMAT and ENDMAT to approximate the z-values of a surface on a regular grid of points given points (x,y,z) which have x, y coordinates distributed randomly in the rectangle [~X3Orig,~X3Max~] @K [~Y3Orig,~Y3Max~]. These routines may be used to construct a matrix ZMat, with up to 101 rows and 101 columns from an arbitrary number of scattered points. These routines are used as follows. The size of the matrix ZMat that is to be constructed first must be specified using BGNMAT:  …ÿ ƒT…ÿ ƒT…CALL BGNMAT( IXDim, IYDim )ƒ  Then GETMAT would be called one or more times to approximate the effect on the surface due to a collection of randomly scattered points (x,y,z). The call  …ÿ ƒT…ÿ ƒT…CALL GETMAT( xAray, yAray, zAray, nPoints, junk ) ƒ  accepts three real arrays containing nPoints values specifying the coordinates of scattered data points. (The parameter "junk" is retained for compatibility with earlier versions of DISSPLA.)  …ÿ ƒTIt is assumed that each of the scattered points should add to the value of the surface at nearby regularly spaced grid points. For each scattered data point, (x,y,z), GETMAT accumulates the effect on each nearby grid point.     Finally, the call   …ÿ ƒT…ÿ ƒT…CALL ENDMAT( ZMat, junk ) ƒ  produces the array of z values needed by Surmat from the information accumulated during previous calls to GETMAT. The value returned in ZMat(i,j) is a weighted average of the z-values of scattered data points (x,y,z) that were "close" to the grid point (Xi, Yi). Each of the z values is weighted by   …ÿ ƒT…ÿ ƒTWeight = 1/(Distance + Offset) ** Power  where Distance is the distance from (x,y) to (Xi, Yi) and Offset is a small positive value to avoid dividing by 0. Some of the parameters used in this process are set by the call  …ÿ ƒT…ÿ ƒT…CALL MDFMAT( Ix, Iy, Power )ƒ  …ÿ ƒTIx specifies the number of rows of ZMat above and below the data point that are to be affected by the data point. Similarly, Iy specifies the number of columns of ZMat left and right of the data point that are to be affected. Power specifies the value of Power to be used in the calculation of the weight. The default value for each of these quantities is 2. MDFMAT need not be called if these defaults are acceptable.    10..T....1..T......T.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.  I…\1 Graphics Inputƒ…IHƒ H H …ÿ ƒTGraphics input can be obtained from input/output devices such as the VAXstation, the VT240/241, and the Tektronix 4014 emulators like the HDS 2200GX.    I…\2 Reading the Cursor Positionƒ…IHƒ H H To turn on the cursor and read the cursor position when input is terminated, use the call:  …ÿ ƒT…CALL HWINPT(XPOS,YPOS)ƒ  Input is terminated on the VAXstation by clicking the left-hand button on the mouse. Input is terminated on the other devices by typing a RETURN. When positioning the cursor on a Tektronix emulator, holding down the shift key before pressing the arrow keys will speed up cursor movement. HWINPT will return the cursor position in inches relative to the physical origin specified by the call to AREA2D. To obtain the position in data units, use the call:  …ÿ ƒT…CALL HWDATAƒ …(XVAL,YVAL)ƒ  If these routines are included when plotting on an output only device, an error message will be returned.   I…\2 Using the Cursor to Modify the Plotƒ…IHƒ H H …ÿ ƒTThe subroutine CURSON was written to allow interaction with the plot on some devices (currently only the VAXstation and the HDS terminals). It allows displaying the cursor position, optionally adding cursor position or text information to the plot and selecting a rectangular subplot area to zoom in on. Use the following syntax to call CURSON:  …ÿ ƒT…CALL CURSON(KEY,X0,X1,Y0,Y1)ƒ  where KEY is a CHARACTER*1 variable and X0,X1,Y0,Y1 are REAL*4 variables. When CURSON is called the cursor cross hairs are turned on. On the VAXstation, a continuous display of cursor position in data units will be displayed in the upper right corner of the plot. On the HDS the cursor coordinates will be displayed each time a return is typed. CURSON also allows input from the keyboard to add text to or delete text from the plot.  …ÿ ƒTIt is recommended that both the hardcopy device and the screen device be nominated before entering CURSON. The only Tektronix 4014 emulator which currently supports all these features is the HDS graphics terminal, because a proprietary erase function has been used. For more consistent results between the screen and hardcopy when you use the HDS terminal as the screen device, software fonts are used on postscript printers when both devices are nominated. …ÿ ƒTThe following keys are recognized by CURSON:   10..T....1..T......B.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. …ÿ ƒTH…ÿ ƒT(D)…ÿ ƒTSet text direction horizontal …ÿ ƒTV…ÿ ƒT…ÿ ƒTSet text direction vertical …ÿ ƒT-…ÿ ƒT…ÿ ƒTSet text direction upside down and backward …ÿ ƒTA…ÿ ƒT…ÿ ƒTAllow input of text angle (default is 0.0@R) …ÿ ƒTX…ÿ ƒT…ÿ ƒTWrite x-coordinate on plot …ÿ ƒTY…ÿ ƒT…ÿ ƒTWrite y-coordinate on plot …ÿ ƒTP…ÿ ƒT…ÿ ƒTWrite both x and y coordinates on plot …ÿ ƒTG…ÿ ƒT…ÿ ƒTEnter beginning/ending position of …þ ƒvector/arrow …ÿ ƒTW…ÿ ƒT…ÿ ƒTEnter arrowhead type to be used in G command. …þ ƒ(Default is IVEC=0, no arrowhead)  …ÿ ƒTT…ÿ ƒT…ÿ ƒTWrite Text on plot (you are prompted for …þ ƒinput) The text will be in the current default …þ ƒsize. An …up-arrowƒ will cause text to go into …þ ƒsuperscript mode and a …down-arrowƒ will cause …þ ƒit to go into subscript mode. The …right-arrowƒ …þ ƒwill cause text size to be 1.5 times the …þ ƒdefault size and the …left-arrowƒ will cause it …þ ƒto be 0.67 times the default size. Use …PF2ƒ to …þ ƒend superscript mode, subscript mode, or to …þ ƒreturn to the default size. …PF3-Gƒ will cause …þ ƒtext to go into Greek mode. …PF3-Nƒ will set …þ ƒtext back to normal. While in text mode, the …þ ƒ…DELETEƒ key can be used to delete the …þ ƒpreviously typed character. The area erased …þ ƒon the screen may be larger than it should be …þ ƒif you are in superscript mode subscript mode, …þ ƒor at some text angles.  …ÿ ƒTB…ÿ ƒT…ÿ ƒTWrite x and y coordinates to plot and to a …þ ƒfile (writing to a file not yet implemented) …ÿ ƒTC…ÿ ƒT…ÿ ƒTWrite x-coordinate to plot and to a file …þ ƒ(writing to a file not yet implemented)  …ÿ ƒTL,U…ÿ ƒT…ÿ ƒTdefines the Lower left and Upper right corner …þ ƒof a box which will be drawn on the screen. …þ ƒOnce a box has been drawn the Zoom command may …þ ƒbe used to zoom in on the selected region.  …ÿ ƒTZ…ÿ ƒT…ÿ ƒTZoom in to selected box region, or Zoom back …þ ƒout to original region. …ÿ ƒTD…ÿ ƒT…ÿ ƒTDelete previous segment added to plot.  …ÿ ƒTQ…ÿ ƒT…ÿ ƒTQuit editing plot without saving additions …þ ƒ(plot will be redrawn on the screen without …þ ƒadditions). …ÿ ƒTE…ÿ ƒT…ÿ ƒTExit from CURSON and save additions to plot.  10.......1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. P   GPLOT Graphics Routines -- Index…ÿ ƒTPage …# ƒ …0qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqƒ    …ÿ ƒ…CIƒ…Indexƒ…I ƒ   P  10..T....1.........B.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13.    10.......1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. GPLOT Graphics Routines -- Examples…ÿ ƒTPage …# ƒ …0qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqƒ    …ÿ ƒ…CIƒ…Examplesƒ…I ƒ     10..T....1.........2.........3.........4.........5.........6....R....7.........8.........9.........10........11........12........13. Example programs and their output are attached, but they are not included in the table of contents or index.