2025-09-05 09:42:21 +02:00

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