source: trunk/PLOTS/DIVERS/autoscale.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 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    ci = (max-min)/20.
45    ci = 10.^floor(alog10(ci))
46
47    n = 0
48    ci0 = ci
49;
50    coef = [2, 2.5, 5, 10]
51;
52; test differents CI (contour intervales), i.e. 1, 2, 2.5, 5 et 10
53; jusqu'a ce que le nombre de contours soit inferieur a 30.
54;
55    WHILE ceil((max-min)/ci) GE 30 DO BEGIN
56          ci = ci0*coef[n]
57          n = n+1
58    ENDWHILE
59
60    min = floor(min/ci/2)*ci*2
61    max = ceil(max/ci/2)*ci*2
62   
63    nlevels = round((max-min)/ci)   
64
65;
66;  force le nombre de contour a etre pair
67;
68    IF nlevels MOD 2 EQ 1 THEN BEGIN
69          nlevels = nlevels+1
70          max = max+ci
71    END
72
73
74END
75
76
77
78
Note: See TracBrowser for help on using the repository browser.