Viewing contents of file '../idllib/astron/contrib/freudenreich/rplot.pro'
PRO RPLOT,X,Y,CUT=NUMSIG, _EXTRA=TOPPINGS
;+
; NAME:
; RPLOT
; PURPOSE:
; Autoscaled plot of glitchy data. Short horizontal bars on the left of
; the plot denote the allowed Y range.
;
; CALLING SEQUENCE:
; RPLOT, X, Y, [ CUT= , _EXTRA= ]
; or
; RPLOT, Y, [ CUT = , _EXTRA = ]
;
; INPUT ARGUMENTS:
; X = the independent variable [OPTIONAL]
; Y = the dependent variable
;
; OPTIONAL INPUT KEYWORDS:
; CUT = the number of sigmas from the mean at which the data are to be
; clipped. (Actually uses median and interquartile range.) Default = 3.0
;
; RPLOT will accept any keyword accepted by the PLOT command.
; NOTES:
; The interquartile range is used to estimate the dispersion of the data
; Points out of range are given the value of the ceiling or floor. If
; there is a trend in the data that is large compared to the noise, the
; ends may be cut off.
;
; EXAMPLES:
; RPLOT,X,Y,CUT=4.0, PSYM=1,SYMSIZ=.5
; or
; RPLOT,Y,CUT=2.5, PSYM=1,SYMSIZ=.5
;
; REVISION HISTORY:
; H.T. Freudenreich, HSTX, 3/91. _EXTRA added 2/94
;-
on_error,1
if not keyword_set(numsig) then sigcut=3.0 else sigcut=numsig
if n_params() eq 1 then z=x else z=y
n = n_elements(z)
s = sort(z)
a = z(s)
ymed = a(n/2)
ymin = ymed - sigcut*1.481*(ymed-a(n/4))
ymax = ymed + sigcut*1.481*(a(3*n/4)-ymed)
q=where(z gt ymax,n) & if n gt 0 then z(q)=ymax
q=where(z lt ymin,n) & if n gt 0 then z(q)=ymin
y1=[ymax,ymax]
y2=[ymin,ymin]
if n_params() eq 1 then begin
plot,z,_extra=toppings
; Now mark the limits:
x1=[!x.crange(0),!x.crange(0)+(!x.crange(1)-!x.crange(0))/20.]
oplot,x1, y1,line=0
oplot,x1, y2,line=0
endif else begin
plot,x,z,_extra=toppings
; Now mark the limits:
x1=[!x.crange(0),!x.crange(0)+(!x.crange(1)-!x.crange(0))/20.]
oplot,x1, y1,line=0
oplot,x1, y2,line=0
endelse
return
end