; $Id: ploterr.pro,v 1.3 1996/12/17 20:21:56 ali Exp $ PRO PLOTERR,X,Y,ERR, psym = PSYM, type = TYPE ; ;+ ; NAME: ; PLOTERR ; ; PURPOSE: ; Plot data points with accompanying error bars. ; (See also OPLOTERR.) ; ; CATEGORY: ; Plotting, two-dimensional. ; ; CALLING SEQUENCE: ; PLOTERR, [ X ,] Y , Err [, PSYM = Psym] [, TYPE = Type] ; ; INPUTS: ; X: The array of abcissae. ; ; Y: The array of Y values. ; ; Err: The array of error-bar values. ; ; OPTIONAL KEYWORD PARAMETERS: ; PSYM: The plotting symbol to use. The default is +7. ; ; TYPE: The type of plot to be 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 ; ; COMMON BLOCKS: ; None. ; ; SIDE EFFECTS: ; None. ; ; RESTRICTIONS: ; Arrays cannot be of type string. There must be enough points to ; plot. ; ; PROCEDURE: ; A plot of X versus Y with error bars drawn from Y - ERR to Y + ERR ; is written to the output device. ; ; MODIFICATION HISTORY: ; William Thompson Applied Research Corporation ; July, 1986 8201 Corporate Drive ; Landover, MD 20785 ; ; DMS, April, 1989 Modified for Unix. ;- ; ;P_SYM = !PSYM ; Save the affected system parameters ;Y_MIN = !YMIN ;Y_MAX = !YMAX ;BANG_C = !C ;LINETYPE = !LINETYPE ; ; Interpret the input parameters. ; if n_elements(type) eq 0 then type = 0 if n_elements(psym) eq 0 then psym = 7 ON_ERROR,2 NP = N_PARAMS(0) IF NP LT 2 THEN BEGIN message,'Must be called with 2-5 parameters: [X,] Y, ERR [,PSYM [,TYPE]]' RETURN ENDIF ELSE IF NP EQ 2 THEN BEGIN ;Only Y and ERR passed. YERR = ABS(Y) YY = X XX = INDGEN(N_ELEMENTS(YY)) ENDIF ELSE BEGIN YERR = ABS(ERR) YY = Y XX = X ENDELSE ; N = N_ELEMENTS(XX) < N_ELEMENTS(YY) < N_ELEMENTS(YERR) IF N LT 2 THEN message, 'Not enough points to plot.' XX = XX[0:N-1] YY = YY[0:N-1] YERR = YERR[0:N-1] YLO = yy - yerr YHI = yy + yerr ; Set yrange if not already set if !y.range[0] eq !y.range[1] then $ ;yrange specified? yrange = [ min(ylo), max(yhi) ] $ else yrange = !y.range ; plot,xx,yy,xtype = type/2, ytype = type and 1, yrange = yrange, psym=psym ; ; Plot the error bars. ; FOR I = 0,N-1 DO plots,[xx[i],xx[i]], [ylo[i], yhi[i]] RETURN END