;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME: autoscale ; ; PURPOSE: on donne un min et un max et la procedure renvoie le ; contour intevalle qui va bien et la valeur des labels. ; ; CATEGORY: autour de CONTOUR ; ; CALLING SEQUENCE: autoscale, min, max, ci ; ; INPUTS: min et max: 2 reels specifiants entre quel min et quel max ; on veut tracer un contour ; ; KEYWORD PARAMETERS: none ; ; OUTPUTS: ci et evenuellement levels. ci est un reel qui donne le ; contour intevalle. A utiliser ds CONTOUR avlec le mot clef LEVEL. ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; CI est un multiple de l'unite en unite log de 10. ; force le nombre de contour a etre pair. ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; MODIFICATION HISTORY: G. Roullet / aout 99 (gr@lodyc.jussieu.fr) ; ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ PRO autoscale, min, max, ci ; ; estimation d'un premier CI, notez la presence du floor (arrondi inferieur) ; ce CI est un multiple de l'unite en unite log de 10. ; ci = (max-min)/20. ci = 10.^floor(alog10(ci)) n = 0 ci0 = ci ; coef = [2, 2.5, 5, 10] ; ; test differents CI (contour intervales), i.e. 1, 2, 2.5, 5 et 10 ; jusqu'a ce que le nombre de contours soit inferieur a 30. ; WHILE ceil((max-min)/ci) GE 30 DO BEGIN ci = ci0*coef[n] n = n+1 ENDWHILE min = floor(min/ci/2)*ci*2 max = ceil(max/ci/2)*ci*2 nlevels = round((max-min)/ci) ; ; force le nombre de contour a etre pair ; IF nlevels MOD 2 EQ 1 THEN BEGIN nlevels = nlevels+1 max = max+ci END END