source: trunk/SRC/ToBeReviewed/PLOTS/DIVERS/autoscale.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME: autoscale
6;
7; PURPOSE: on donne un min et un max et la procedure renvoie le
8; contour intevalle qui va bien et la valeur des labels.
9;
10; CATEGORY: autour de CONTOUR
11;
12; CALLING SEQUENCE: autoscale, min, max, ci
13;
14; INPUTS: min et max: 2 reels specifiants entre quel min et quel max
15; on veut tracer un contour
16;
17; KEYWORD PARAMETERS: none
18;
19; OUTPUTS: ci et evenuellement levels. ci est un reel qui donne le
20; contour intevalle. A utiliser ds CONTOUR avlec le mot clef LEVEL.
21;
22; COMMON BLOCKS:
23;
24; SIDE EFFECTS:
25;
26;  CI est un multiple de l'unite en unite log de 10.
27;  force le nombre de contour a etre pair.
28;
29; RESTRICTIONS:
30;
31; EXAMPLE:
32;
33; MODIFICATION HISTORY: G. Roullet / aout 99 (gr@lodyc.jussieu.fr)
34;
35;-
36;------------------------------------------------------------
37;------------------------------------------------------------
38;------------------------------------------------------------
39PRO autoscale, min, max, ci
40;
41;  estimation d'un premier CI, notez la presence du floor (arrondi inferieur)
42; ce CI est un multiple de l'unite en unite log de 10.
43;
44;
45  compile_opt idl2, strictarrsubs
46;
47    ci = (max-min)/20.
48    ci = 10.^floor(alog10(ci))
49
50    n = 0
51    ci0 = ci
52;
53    coef = [2, 2.5, 5, 10]
54;
55; test differents CI (contour intervales), i.e. 1, 2, 2.5, 5 et 10
56; jusqu'a ce que le nombre de contours soit inferieur a 30.
57;
58    WHILE ceil((max-min)/ci) GE 30 DO BEGIN
59          ci = ci0*coef[n]
60          n = n+1
61    ENDWHILE
62
63    min = floor(min/ci/2)*ci*2
64    max = ceil(max/ci/2)*ci*2
65   
66    nlevels = round((max-min)/ci)   
67
68;
69;  force le nombre de contour a etre pair
70;
71    IF nlevels MOD 2 EQ 1 THEN BEGIN
72          nlevels = nlevels+1
73          max = max+ci
74    END
75
76
77END
78
79
80
81
Note: See TracBrowser for help on using the repository browser.