NAME: CLEANPLOT PURPOSE: Reset all system variables (!P,!X,!Y,!Z) set by the user which affect plotting to their default values. CALLING SEQUENCE: Cleanplot INPUTS: None OUTPUTS: None SIDE EFFECTS: The system variables that concern plotting are reset to their default values. A message is output for each variable changed. The CRANGE, S, WINDOW, and REGION fields of the !X, !Y, and !Z system variables are not checked since these are set by the graphics device and not by the user. PROCEDURE: This does NOT reset the plotting device. This does not change any system variables that don't control plotting. RESTRICTIONS: If user default values for !P, !X, !Y and !Z are different from the defaults adopted below, user should change P_old etc accordingly MODIFICATION HISTORY: Written IDL Version 2.3.0 W. Landsman & K. Venkatakrishna May '92 Handle new system variables in V3.0.0 W. Landsman Dec 92
(See /usr/local/idl/lib/zastron/plot/cleanplot.pro)
NAME: CURFULL PURPOSE: This program is designed to essentially mimic the IDL CURSOR command, but using a full screen cursor rather than a small cross cursor. Uses OPLOT and X-windows graphics masking to emulate the cursor. CALLING SEQUENCE: curfull, [X, Y, WaitFlag], [/DATA, /DEVICE, /NORMAL, /NOWAIT, /WAIT, /DOWN, /CHANGE, LINESTYLE=, THICK=, /NOCLIP] REQUIRED INPUTS: None. OPTIONAL INPUTS: WAITFLAG = if equal to zero it sets the NOWAIT keyword {see below} OPTIONAL KEYWORD PARAMETERS: DATA = Data coordinates are returned. DEVICE = device coordinates are returned. NORMAL = normal coordinates are returned. NOWAIT = if non-zero the routine will immediately return the cursor's present position. WAIT = if non-zero will wait for a mouse key click before returning. DOWN = equivalent to WAIT CHANGE = returns when the mouse is moved OR if a key is clicked. LINESTYLE = style of line that makes the cursor. THICK = thickness of the line that makes the cursor. NOCLIP = if non-zero will make a full-screen cursor, otherwise it will default to the value in !P.NOCLIP. NOTES: Note that this procedure does not allow the "UP" keyword/flag...which doesn't seem to work too well in the origianl CURSOR version anyway. If a data coordinate system has not been established, then CURFULL will create one identical to the device coordinate system. Note that this kluge is required even if the user specified /NORMAL coordinates, since CURFULL makes use of the OPLOT procedure Only tested on X-windows systems. If this program is interrupted, the graphics function might be left in a non-standard state. Type DEVICE,SET_GRAPHICS=3 to return the standard graphics function. PROCEDURE: The default cursor is blanked out and full-screen (or full plot window, depending on the value of NOCLIP) intersecting lines are drawn centerd on the cursor's position. MODIFICATION HISTORY: Written by J. Parker 22 Nov 93 Create data coordinates if not already present, W. Landsman Nov. 93
(See /usr/local/idl/lib/zastron/plot/curfull.pro)
Name: LEGEND Purpose: This procedure makes a legend for a plot. The legend can contain a mixture of symbols, linestyles, Hershey characters (vectorfont), and filled polygons (usersym). Examples: The call: legend,['diamond','asterisk','square'],psym=[4,2,6] produces: ----------------- | | | <> diamond | | * asterisk | | [] square | | | ----------------- Each symbol is drawn with a plots command, so they look OK. Other examples are given in usage. Usage: legend,items,linestyle=linestyle ; vertical legend at upper left legend,items,psym=psym ; ditto except using symbols legend,items,psym=psym,/horizontal ; horizontal format legend,items,psym=psym,box=0 ; sans border legend,items,psym=psym,delimiter='=' ; embed an '=' betw psym & text legend,items,psym=psym,margin=2 ; 2-character margin legend,items,psym=psym,position=pos ; position of legend legend,items,psym=psym,number=2 ; plot two symbols, not one legend,items,/fill,psym=[8,8,8],colors=[10,20,30]; 3 filled squares Inputs: items = text for the items in the legend, a string array. You can omit items if you don't want any text labels. For example, items = ['diamond','asterisk','square']. Optional Inputs: linestyle = array of linestyle numbers If linestyle(i) < 0, then omit ith symbol or line to allow a multi-line entry. psym = array of plot symbol numbers. If psym(i) is negative, then a line connects pts for ith item. If psym(i) = 8, then the procedure usersym is called with vertices define in the keyword usersym. N. B.: Choose either linestyle, psym, neither, or both. If neither is present, only the text is output. If both linestyle and psym parameters are present, they both have to have the same number of elements, and normal plot behaviour occurs. By default, if psym is positive, you get one point so there is no connecting line. vectorfont = vector-drawn characters for the sym/line column, e.g., ['!9B!3','!9C!3','!9D!3'] produces an open square, a checkmark, and a partial derivative, which might have accompanying items ['BOX','CHECK','PARTIAL DERIVATIVE']. If vectorfont(i) = '', then plots is called to make a symbol or a line, but if vectorfont(i) is a non-null string, then xyouts is called. There is no check that !p.font is set properly, e.g., -1 for X and 0 for PostScript. This can produce an error, e.g., use !20 with PostScript and !p.font=0, but allows use of Hershey *AND* PostScript fonts together. Optional Keywords: /help = flag to print header /horizontal = flag to make the legend horizontal /vertical = flag to make the legend vertical (D=vertical) box = flag to include/omit box around the legend (D=include) delimiter = embedded character(s) between symbol and text (D=none) colors = array of colors for plot symbols/lines (D=!color) textcolors = array of colors for text (D=!color) margin = margin around text measured in characters and lines spacing = line spacing (D=bit more than character height) pspacing = psym spacing (D=3 characters) charsize = just like !p.charsize for plot labels position = normalized coordinates of the upper left of the legend number = number of plot symbols to plot or length of line (D=1) usersym = 2-D array of vertices, cf. usersym in IDL manual. (D=square) /fill = flag to fill the usersym Outputs: legend to current plot device Optional Output Keywords: corners = 4-element array, like !p.position, of the normalized coords for the box (even if box=0): [llx,lly,urx,ury]. Useful for multi-column or multi-line legends, for example, to make a 2-column legend, you might do the following: c1_items = ['diamond','asterisk','square'] c1_psym = [4,2,6] c2_items = ['solid','dashed','dotted'] c2_line = [0,2,1] legend,c1_items,psym=c1_psym,corners=c1,box=0 legend,c2_items,line=c2_line,corners=c2,box=0,pos=[c1(2),c1(3)] c = [c1(0)c2(2),c1(3)>c2(3)] plots,[c(0),c(0),c(2),c(2),c(0)],[c(1),c(3),c(3),c(1),c(1)],/norm Useful also to place the legend. Here's an automatic way to place the legend in the lower right corner. The difficulty is that the legend's width is unknown until it's is plotted. In this example, the legend is plotted twice: the first time in the upper left, the second time in the lower right. legend,['1','22','333','4444'],linestyle=indgen(4),corners=corners ; BOGUS LEGEND---FIRST TIME TO REPORT CORNERS xydims = [corners(2)-corners(0),corners(3)-corners(1)] ; SAVE WIDTH AND HEIGHT chdim=[!d.x_ch_size/float(!d.x_size),!d.y_ch_size/float(!d.y_size)] ; DIMENSIONS OF ONE CHARACTER IN NORMALIZED COORDS pos = [!x.window(1)-chdim(0)-xydims(0) $ ,!y.window(0)+chdim(1)+xydims(1)] ; CALCULATE POSITION FOR LOWER RIGHT plot,findgen(10) ; SIMPLE PLOT; YOU DO WHATEVER YOU WANT HERE. legend,['1','22','333','4444'],linestyle=indgen(4),pos=pos ; REDO THE LEGEND IN LOWER RIGHT CORNER You can modify the pos calculation to place the legend where you want. For example to place it in the upper right: pos = [!x.window(1)-chdim(0)-xydims(0),!y.window(1)-xydims(1)] Common blocks: none Procedure: If keyword help is set, call doc_library to print header. See notes in the code. Restrictions: Here are some things that aren't implemented. - It would be nice to allow data and device coords as well. - An orientation keyword would allow lines at angles in the legend. - An array of usersyms would be nice---simple change. - An order option to interchange symbols and text might be nice. - Somebody might like double boxes, e.g., with box = 2. - Another feature might be a continuous bar with ticks and text. - There are no guards to avoid writing outside the plot area. - There is no provision for multi-line text, e.g., '1st line!c2nd line' Sensing !c would be easy, but !c isn't implemented for PostScript. A better way might be to simply output the 2nd line as another item but without any accompanying symbol or linestyle. A flag to omit the symbol and linestyle is linestyle(i) = -1. Side Effects: Modification history: write, 24-25 Aug 92, F K Knight (knight@ll.mit.edu) allow omission of items or omission of both psym and linestyle, add corners keyword to facilitate multi-column legends, improve place- ment of symbols and text, add guards for unequal size, 26 Aug 92, FKK add linestyle(i)=-1 to suppress a single symbol/line, 27 Aug 92, FKK add keyword vectorfont to allow characters in the sym/line column, 28 Aug 92, FKK Removed default Usersym defintion W. Landsman HSTX July, 1993
(See /usr/local/idl/lib/zastron/plot/legend.pro)
Name: legendtest Purpose: Test the legend procedure. Usage: .run legendtest Inputs: none Optional Inputs: none Keywords: none Outputs: legends of note Common blocks: none Procedure: Side Effects: Sets !20 font to symbol if PostScript and !p.font=0. Restrictions: With the vectorfont test, you'll get different results for PostScript depending on the value of !p.font. Modification history: write, 27 Aug 92, F.K.Knight (knight@ll.mit.edu)
(See /usr/local/idl/lib/zastron/plot/legendtest.pro)
NAME: OPLOTERR PURPOSE: Over-plot data points with accompanying X or Y error bars. CALLING SEQUENCE: oploterr, [ x,] y, [xerr], yerr [,/NOHAT, HATLENGTH= , ERRTHICK= , ERRSTYLE= ] INPUTS: X = array of abcissae, any datatype except string Y = array of Y values, any datatype except string XERR = array of error bar values (along X) YERR = array of error bar values (along Y) OPTIONAL INPUT KEYWORD PARAMETERS: NOHAT = if specified and non-zero, the error bars are drawn without hats. HATLENGTH = the length of the hat lines used to cap the error bars. Defaults to !D.X_VSIZE / 100). ERRTHICK = the thickness of the error bar lines. Defaults to the THICK plotting keyword. ERRSTYLE = the line style to use when drawing the error bars. Uses the same codes as LINESTYLE. The keywords available to the OPLOT procedure may also be specified (see Appendix D in the IDL User's Guide). The CLIP keyword is specifically unavailable: To modify this, it is necessary to change !P.CLIP. NOTES: If only two parameters are input, they are taken as Y and YERR If only three parameters are input, they will be taken as X, Y and YERR respectively. EXAMPLE: Suppose one has X and Y vectors with associated errors XERR and YERR (1) Overplot Y vs. X with both X and Y errors and no lines connecting the points IDL> oploterr, x, y, xerr, yerr, psym=3 (2) Like (1) but overplot only the Y errors bars and omits "hats" IDL> oploterr, x, y, yerr, psym=3, /NOHAT PROCEDURE: A plot of X versus Y with error bars drawn from Y - YERR to Y + YERR and optionally from X - XERR to X + XERR is written to the output device MODIFICATION HISTORY: Adapted from the most recent version of PLOTERR. M. R. Greason, Hughes STX, 11 August 1992. Removed spurious keywords for IDL V3.0.0 W. Landsman Jan. 1993 Added ability to plot a single point W. Landsman July 1993 Added COLOR keyword option to error bars W. Landsman November 1993
(See /usr/local/idl/lib/zastron/plot/oploterr.pro)
NAME: PLOTERR PURPOSE: Plot data points with accompanying X or Y error bars. CALLING SEQUENCE: ploterr, [ x,] y, [xerr], yerr [, TYPE =, /NOHAT, HATLENGTH= , ERRTHICK=, ERRSTYLE= ] INPUTS: X = array of abcissae. Y = array of Y values. XERR = array of error bar values (along X) YERR = array of error bar values (along Y) OPTIONAL INPUT KEYWORD PARAMETERS: TYPE = type of plot produced. The possible types are: TYPE = 0 : X Linear - Y Linear (default) TYPE = 1 : X Linear - Y Log TYPE = 2 : X Log - Y Linear TYPE = 3 : X Log - Y Log Actually, if 0 is specified, the XTYPE and YTYPE keywords are used. If these aren't specified, then a linear-linear plot is produced. This keyword is available to maintain compatibility with the previous version of PLOTERR. NOHAT = if specified and non-zero, the error bars are drawn without hats. HATLENGTH = the length of the hat lines used to cap the error bars. Defaults to !D.X_VSIZE / 100). ERRTHICK = the thickness of the error bar lines. Defaults to the THICK plotting keyword. ERRSTYLE = the line style to use when drawing the error bars. Uses the same codes as LINESTYLE. The keywords available to the PLOT procedure may also be specified (see Appendix D in the IDL User's Guide). There are two that are specifically unavailable: POSITION and CLIP. To modify these, it is necessary to change the appropriate system variables. RESTRICTIONS: Arrays must not be of type string. There must be enough points to plot. If only three parameters are input, they will be taken as X, Y and YERR respectively. EXAMPLE: Suppose one has X and Y vectors with associated errors XERR and YERR (1) Plot Y vs. X with both X and Y errors and no lines connecting the points IDL> ploterr, x, y, xerr, yerr, psym=3 (2) Like (1) but plot only the Y errors bars and omits "hats" IDL> ploterr, x, y, yerr, psym=3, /NOHAT PROCEDURE: A plot of X versus Y with error bars drawn from Y - YERR to Y + YERR and optionally from X - XERR to X + XERR is written to the output device MODIFICATION HISTORY: William Thompson Applied Research Corporation July, 1986 DMS, April, 1989 Modified for Unix Michael R. Greason ST Systems May, 1991 Added most of the plotting keywords, put hats on the error bars. Wayne Landsman Added call to PLOT_KEYWORDS Jan, 1992 K. Venkatakrishna Added option to plot xerr, May, 1992 Michael R. Greason Corrected handling of reversed axes. Aug. 1992.
(See /usr/local/idl/lib/zastron/plot/ploterr.pro)
NAME: PLOTHIST PURPOSE: Plot the histogram of an array with the corresponding abcissa. CALLING SEQUENCE: plothist, arr, xhist, yhist, [, BIN=bin, ... plotting keywords] INPUTS: arr - The array to plot the histogram of. It can include negative values, but non-integral values will be truncated. OPTIONAL OUTPUTS: xhist - X vector used in making the plot ( = indgen( N_elements(h)) * bin + min(arr) ) yhist - Y vector used in making the plot (= histogram(arr/bin)) OPTIONAL INPUT KEYWORDS: BIN - The size of each bin of the histogram, scalar (not necessarily integral). If not present (or zero), the bin size is set to 1. Any input keyword that can be supplied to the PLOT procedure can also be supplied to PLOTHIST. EXAMPLE: Create a vector of 1000 values derived from a gaussian of mean 0, and sigma of 1. Plot the histogram of these value with a bin size of 0.1 IDL> a = randomn(seed,1000) IDL> plothist,a, bin = 0.1 MODIFICATION HISTORY: Written W. Landsman January, 1991
(See /usr/local/idl/lib/zastron/plot/plothist.pro)
NAME: PLOTSYM PURPOSE: Define useful plotting symbols not in the standard !PSYM definitions. After symbol has been defined with PLOTSYM, a plotting command should follow with either PSYM = 8 or !P.PSYM = 8 (see USERSYM) CALLING SEQUENCE: PLOTSYM, PSYM,[ PSIZE, /FILL] INPUTS: PSYM - The following integer values of PSYM will create the corresponding plot symbols 0 - circle 1 - downward arrow (upper limit), base of arrow begins at plot value 2 - upward arrow (lower limt) 3 - 5 pointed star 4 - triangle 5 - upside down triangle 6 - left pointing arrow 7 - right pointing arrow Arrows are defined such that their base begins at their origin. OPTIONAL INPUTS: PSIZE - Size of the plotting symbol in multiples of the default size (default PSIZE=1). Does not need to be an integer OPTIONAL INPUT KEYWORD: FILL - Parameter indicating whether to fill the symbol (see USERSYM) The default is 0, unfilled symbol. Does not affect arrows or character symbols. OUTPUTS: None EXAMPLES: Plot Y vs. X with filled stars as the symbol, twice the default size IDL> PLOTSYM, 3 ,2, /FILL ;Plotting symbol is a filled star, ;twice default size IDL> PLOT,X,Y,PSYM=8 ;Set PSYM = 8 to get star symbol Now plot Y vs. X with open circle as the symbol IDL> PLOTSYM, 0 ;Plotting symbol is a circle IDL> PLOT,X,Y,PSYM=8 METHOD: Appropiate X,Y vectors are used to define the symbol and passed to the USERSYM command. REVISION HISTORY Written W. Landsman June 1992
(See /usr/local/idl/lib/zastron/plot/plotsym.pro)
NAME: PLOT_KEYWORDS PURPOSE: Return default value(s) of plotting keywords. Useful inside of a plotting procedure. CALLING SEQUENCE: plot_keywords, [BACKGROUND =, CHANNEL =, CHARSIZE =, CHARTHICK =, COLOR = , DATA = , DEVICE = , FONT = , LINESTYLE =, NOCLIP = , NODATA = , NOERASE = , NORMAL =, NSUM = , PSYM =, SUBTITLE =, SYMSIZE = , T3D = , THICK = , THICKLEN = , TITLE = , XCHARSIZE=, XMARGIN =, XMINOR =, XRANGE =, XSTYLE = , XTICKLEN =, XTHICK = ,XTICKNAME =, XTICKS = , XTICKV = , XTITLE =, XTYPE =, YCHARSIZE = , YMARGIN = ,YMINOR = , YNOZERO = , YRANGE = , YSTYLE =, YTHICK =, YTICKLEN = ,YTICKNAME =, YTICKS =, YTICKV =, YTITLE = , YTYPE = ] INPUT - OUTPUTS: None. OPTIONAL OUTPUT KEYWORDS: Any of the plotting keywords above. These keywords are all recognized by the PLOT procedure, and listed in Appendix D.2 of the IDL manual. PLOT_KEYWORDS does *not* include any of the Z axis keywords used for 3-d plotting. An undefined variable assigned to the keyword will be returned with the default value, usually from the correpsonding system variable. EXAMPLE: Suppose that one has a procedure PLOT_PROC that will make a call to the IDL PLOT procedure. One wishes to include the optional plot keywords XRANGE and YRANGE in PLOT_PROC and pass these to PLOT pro plot_proc, XRANGE = xrange, YRANGE = yrange ...... plot_keywords, XRANGE = xran, $ ;Get default values if user did YRANGE = yran ;not supply any values plot,.... XRANGE = xran, YRANGE = yran ;Pass to PLOT procedure NOTES: Plotting keywords that return values (such as XTICK_GET) are not included since there is no need to specify a default. The default of XTYPE is 0 and not !X.TYPE MODIFICATION HISTORY: Written Wayne Landsman January, 1991 Modified default for XTYPE and YTYPE Switched from keyword_set to N_elements. Corrected a LINESTYLE error. Michael R. Greason, Hughes STX, 24 March 1993.
(See /usr/local/idl/lib/zastron/plot/plot_keywords.pro)