61 lines
1.2 KiB
Prolog
Executable File
61 lines
1.2 KiB
Prolog
Executable File
function nice_contourlevels, data, nlevels=nlevels
|
|
;+----------------------------------------------------------------------------------------
|
|
; nice_contourlevels.pro
|
|
;
|
|
; Select nice contour levels based on the data input and the number of levels
|
|
;
|
|
; Author: D. J. Lea - Feb 2008
|
|
;
|
|
;+----------------------------------------------------------------------------------------
|
|
|
|
if (n_elements(nlevels) eq 0) then nlevels=15
|
|
|
|
mx=max(data)
|
|
mn=min(data)
|
|
|
|
; use this to select colors to plot and labels
|
|
|
|
clevels=findgen(nlevels)/nlevels*(mx-mn)+mn
|
|
|
|
ocint=1./nlevels*(mx-mn)
|
|
print,'ocint ',ocint
|
|
|
|
; contour interval at 2 sig figs
|
|
;digits=2
|
|
;p10 = floor(alog10(abs(ocint)))
|
|
;expo = 10.0d^(digits -1 - p10)
|
|
;cint = long(ocint*expo)/expo
|
|
;print,'cint ',cint
|
|
|
|
;does it end in 5 or 0?
|
|
digits=1
|
|
p10 = floor(alog10(abs(ocint)))
|
|
expo = 10.0d^(digits -1 - p10)
|
|
cint = long(ocint*expo)/expo
|
|
print,'cint ',cint
|
|
|
|
if (mx ne mn) then begin
|
|
mxfix=fix(mx/cint)*cint
|
|
mnfix=fix(mn/cint)*cint
|
|
print, mx, mxfix
|
|
print, mn, mnfix
|
|
|
|
; nice contour values
|
|
|
|
;calculate new nlevels
|
|
nlevels=fix((mxfix-mnfix)/cint+1)
|
|
|
|
;print,nlevels
|
|
if (nlevels gt 0) then begin
|
|
clevels=findgen(nlevels)*cint+mnfix
|
|
endif else begin
|
|
clevels=mnfix
|
|
endelse
|
|
endif else begin
|
|
clevels=mn
|
|
endelse
|
|
|
|
return, clevels
|
|
|
|
end
|