source: trunk/PLOTS/DESSINE/pltz.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: 22.3 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:
6;       PLTZ
7;
8; PURPOSE:
9;       trace des graphes verticaux
10;
11; CATEGORY:
12;       Graphics
13;
14; CALLING SEQUENCE:
15;       pltz, champ [,min[, max]]
16;
17; INPUTS:
18;       champ: le champ dont on veut faire la coupe verticale champ
19;       peut etre de 2 types:
20;         1) un tableau 2d ou 3d.
21;         Si le champ est 2d undiquer avec le mot cle boite les
22;         delimitations geographiques de la boite. Si le chyamp est
23;         3d, on extrait la section et on moyenne eventuellement avant
24;         de faire le plot
25;         2) une structure repondant aux critaire specifies par
26;         litchamp.pro. cf. IDL> xhelp,'litchamp'. le tableau contenu
27;         ds la structure doit etre 2 ou 3d cf cas 1) si dessus
28;
29; ces arguments ne sont pas obligatoires:
30
31;       MAX: valeur maximum que l'on veut prendre en compte dans le trace
32; des contours. Par defaut on prend le max de tab1 (sur les pts mer)
33;
34;       MIN: valeur minimum que l'on veut prendre en compte dans le trace
35; des contours. Par defaut on prend le min de tab1 (sur les pts mer)
36;
37; KEYWORD PARAMETERS:
38;
39;       BOITE:vecteur indiquant la zone geographique sur laquelle doit etre
40; faite la coupe. Si BOITE a :
41; 1 element : l''extraction est faite sur [lon1, lon2, lat1, lat2, 0.,boite[0]]
42; 2 elements: l''extraction est faite sur [lon1, lon2, lat1, lat2, boite[0],boite[1]]
43; 4 elements: l''extraction est faite sur [Boite, 0, 200]
44; 5 elements: l''extraction est faite sur [Boite[0:3], 0, Boite[4]]
45; 6 elements: l''extraction est faite sur Boite
46;
47; Ou lon1, lon2,lat1,lat2 sont les variables globales
48; definies lors du dernier domdef!
49;
50;      CB_TITLE: le titre de la colorbar
51;
52;      CB_SUBTITLE: le soustitre de la colorbar
53;
54;      CB_CHARSIZE: The character size of the color bar annotations
55;
56;       CONTINTERVALLE: lorsque CONTOUR est active, valeur d'un
57; intervalle entre deux isolignes traces par un trait ds la couleur
58; c_lab. Il peut ainsi etre different de celui specifie par INTERVALLE
59; qui, cas ce cas, ne controle que les isolignes coloriees en
60; couleurs. Si aucun min n''est specifie, on choisit un contour min qui va
61; bien avec l''intervalle specifie!. Si ce mot cle n''est pas
62; specifie, on trace 20 isolignes du min au max.
63;
64;       CONTLABEL: un entier n. lorsque CONTOUR est active, si n
65; different de 0, choisit le type de label correspondant aux cas n
66; pour les isolignes tracees par un trait. Pour specifier le type de
67; label du contour en couleur, utiliser LABEL
68;
69;       CONTMAX: lorsque CONTOUR est active, valeur maximum que l''on
70; veut prendre en compte dans le trace des isolignes traces par un
71; trait de couleur c_lab. Par defaut on prend le max (sur les pts mer)
72; du tableau passe ds le mot cle CONTOUR.
73;
74;       CONTMIN: lorsque CONTOUR est active, valeur minimum que l''on
75; veut prendre en compte dans le trace des isolignes traces par un
76; trait de couleur c_lab. Par defaut on prend le max (sur les pts mer)
77; du tableau passe ds le mot cle CONTOUR.
78;
79;       CONTNLEVEL: lorsque CONTOUR est active, nombre de contours
80; trace par un trait de couleur c_lab a dessiner (actif si
81; CONTLABEL=0) par defaut =20.
82;
83;       CONTOUR: si on veut tracer les contours d'un champ different que celui
84; que l''on dessin en couleur (par ex E-P en couleur et QSR en
85; contours). Doit etre un champ reponadnt aux meme caracteristiques
86; que l''argument numero 1 de pltz
87;
88;       ENDPOINTS: mot clef specifiant que l'on veut faire une coupe
89;       verticale en diagonale. les coordonnees des extremites de
90;       celle-ci sont alors definies les 4 elements du vecteur
91;       ENDPOINTS: [x1,y1,x2,y2] qui sont les coordonnees
92;
93;       INTERVALLE: valeur d''un intervalle entre deux isolignes. Si
94; aucun min n''est specifie, on choisit un contour min qui va bien
95; avec l'intervalle specifie!. Si ce mot cle n''est pas specifie, on
96; trace 20 isolignes du min au max. Rq: Qd CONTOUR est active
97; INTERVALLE ne specifie que intervalle entre 2 isolignes coloriees en
98; couleur. Pour specifier l''intervalle entre 2 isolignes traces par un trait
99; de couleur c_lab utiliser CONTINTERVALLE.
100;
101;       /INV: inverse le vecteur couleur utilisee pour colorier le graphe
102;             (sans toucher au noir, au blanc et a la palette utilisee)
103;
104;       HZSURHT: lorsque le dessin presente une partie zoomee, rapport de
105; taille entre la partie zommee, hz (hauteur zoom), et le dessin entier, ht
106; (hauteur total). Par defaut =2./3
107;
108;       LABEL: un entier n. si n different de 0, choisit le type de
109; label correspondant aux cas n. cf label.pro
110; Rq: Qd CONTOUR est active, ne specifie le type de label que pour les
111; isolignes coloriees en couleur. Pour celles tracees par un trait de
112; couleur c_lab utiliser CONTLABEL.
113;
114;       /LANDSCAPE: oblige la feuille ou la fenetre a etre en position
115;       "allongee"
116;
117;       LCT: entier designant le numero de la palette de couleur que
118;       l''on veut utiliser pour le plot.
119;       
120;       MAXIN: permet de specifier la valeur maximum que l''on veut
121;       prendre en compte dans le trace des contours a l''aide d''un
122;       mot cle plutot que par l''argument max. Si l''argument et le
123;       mot cle sont specifies en meme temps, c''est la valeur
124;       specifiee par le mot cle qui est retenue.
125;
126;       MININ: permet de specifier la valeur minimum que l''on veut
127;       prendre en compte dans le trace des contours a l''aide d''un
128;       mot cle plutot que par l''argument min. Si l''argument et le
129;       mot cle sont specifies en meme temps, c''est la valeur
130;       specifiee par le mot cle qui est retenue.
131;       
132;       NLEVEL: nombre de contours a dessiner. par defaut =20. actif si
133; LABEL=0 ou n'est pas specifie.
134;
135;       /NOCOLORBAR: activer si on ne veut pas de colorbar
136;
137;       /NOCONTOUR: activer si on ne veut pas de contour mais juste
138;       les couleurs
139;
140;       /NOCOULEUR: activer si on veut juste les contours en noir et
141;       blanc sur fond blanc
142;
143;       /NOERASE: activer pour faire un dessin a l''ecran sans creer
144;       une nouvelle fenetre
145;
146;       /NOTRI: pour forcer a ne pas utiliser de triangulation.
147;
148;       OVERPLOT: pour faire un plt par dessus un autre. Rq:
149;       contrairemnet a l''utilisation de CONTOUR,
150;       l''utilisation de ce mot clef ne modifie pas la legende ou/et
151;       la barre de couleur.
152;
153;       PETITDESSIN: vecteur de 3 ou 4 elements, applique pour faire un
154; dessin sur une petite portion de feuille ou d''ecran. il delimite
155; la zone ds laquelle va etre fait le dessin
156; si il a 4 elements:
157;       il est alors constitute des coordonnees -exprime en cm reperes par
158;       rapport au coin en bas a gauche de la feuille ou de la fenetre
159;       (en portrait comme en landscape)- du coin en bas a
160;       gauche et du coin en haut a droite  de la zone de dessin.
161; si il a 3 elements:
162;       Ds ce cas, on divise la fenetre ou l''ecran en PETITDESSIN[0]
163;       colonnes, en PETITDESSIN[1] lignes le dessin se faisant ds la
164;       case numero PETITDESSIN[2].La numerotation commencant en haut
165;       a gauche par le numero 1 et suivant apres dans le sens de
166;       l''ecriture.
167; Par defaut on fait un dessin occupant la plus grande place possible
168; tout en concervant le rapport d''aspect (sauf qd REMPLI est active)
169;
170;       /PORTRAIT: oblige la feuille ou la fenetre a etre en position
171;       "debout"
172;
173;       /POST: faire une sortie postscript. Ne marche que si on fait
174;       un seul dessin sur la feuille. Si on fait plusieurs dessins,
175;       utiliser @ps ou plein2dessins
176;
177;       /REMPLI:oblige le dessin a occuper l'espace maximum definit
178;       par petitdessin
179;
180;       /REVERSE_X: pour inverser l''axe des x (et aussi le dessin)
181;
182;       /REVERSE_Y: pour inverser l''axe des y (et aussi le dessin)
183;
184;       /SIN: activer ce mot cle si l''on veut que l'' axe des x soit
185;       trace en sinus de la latitude qd on fait une coupe 'yz'
186;
187;       /STRICTFILL: activer ce mot clef pour que le remplissage des
188;       contours ce fasse precisement entre le min et le max specifie
189;       en laissant en banc les valeurs inferieurs au min specifie et
190;       superieurs au max specifie.
191;
192;       STYLE: style de tracer a adopter pour dessiner les isolignes par
193; defaut style=0. cf style.pro
194;
195;       /TRANS: fait un postscript (active /post automatiquement) et l'imprime
196; -si on le desire- sur un transparant
197;
198;        UNLABSUR: entier n. specifant qu''on ne labelle qu''un
199;        contour sur n. Par defaut unlabsur=2
200;
201;       /UNSUR2: si on veut tracer un countour sur deux. par  defaut trace
202; tous les contours
203;
204;       WINDOW: nimero de la fenetre ou l'on veut faire le graphe (permet
205; d'ouvrir plusieurs fenetres). par defaut on ouvre 'IDL0'
206;
207;       /XZ: force a faire une coupe xz
208;
209;       /YZ: force a faire une coupe yz
210;
211;       YSURX: rapport d'echelle entre y et x (par ex: =1 pour un repere
212; presque orthonorme, =2 si l'axe des y est environ deux fois plus dilate
213; que celui des x). Par defaut on adapte pour occupe une grande partie de
214; la feuille en sortie postScript ou pour cree une fenetre pas trop etiree
215;
216;       ZOOM: profondeur jusqu'a laquelle on fait un zoom. par defaut 200m ou
217; la profondeur maximale si elle est inf a 200
218;
219; OUTPUTS:
220;
221; COMMON BLOCKS:
222;       common.pro     
223;
224; SIDE EFFECTS:
225;
226; RESTRICTIONS:
227;
228; EXAMPLE:
229;
230; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr)
231;                       7/1999
232;                       Sebastien Masson 08/02/2000 checkfield and
233;                       notri keyword.
234;-
235;------------------------------------------------------------
236;------------------------------------------------------------
237;------------------------------------------------------------
238pro pltz,tab,giventype, givenmin,givenmax,BOITE=boite,CONTOUR=contour $
239         ,ENDPOINTS=endpoints,INTERVALLE=intervalle,INV=inv,HZSURHT=hzsurht $
240         ,CONTINTERVALLE=contintervalle,LABEL=label,CONTLABEL=contlabel $
241         ,STYLE=style,CONTMAX=contmax, SIN = sin, TYPEIN = typein $
242         ,CONTMIN=contmin,NLEVEL=nlevel,CONTNLEVEL=contnlevel, NOTRI = notri $
243         ,ZOOM=zoom, XZ = xz, YZ = yz, MININ = minin, MAXIN = maxin $
244         , STRICTFILL = strictfill, OVERPLOT = overplot, _EXTRA = ex
245@common
246   tempsun = systime(1)         ; pour key_performance
247;------------------------------------------------------------
248;--------------------------------------------------------------
249; 1ere partie: initialisation et petits calculs...
250;--------------------------------------------------------------
251;on ne reinitialise pas qd on rapelle pltz en boucle pour utiliser contour
252   if n_elements(contour) ne 4 AND NOT keyword_set(overplot) then reinitplt
253;
254   if keyword_set(boite) then oldboite = [lon1, lon2, lat1, lat2, prof1, prof2]
255;--------------------------------------------------------------
256; lecture du champ
257;--------------------------------------------------------------
258   if n_elements(giventype) NE 0 then type = giventype
259   if n_elements(givenmin) NE 0 then min = givenmin
260   if n_elements(givenmax) NE 0 then max = givenmax
261   if n_elements(minin) NE 0 then min = minin
262   if n_elements(maxin) NE 0 then max = maxin
263   if keyword_set(typein) then BEGIN
264      if size(type, /type) NE 7 AND size(type, /type) NE 0 then begin
265         if n_elements(min) NE 0 then max = min
266         min = type
267      endif
268      type = typein
269   endif
270   if keyword_set(boite) then vraiboite = boite
271   checktypeminmax, 'pltz', TYPE = type, MIN = min, MAX = max, XZ = xz, YZ = yz, ENDPOINTS=endpoints, BOITE = boite, _extra = ex
272   coupe = type
273   if keyword_set(endpoints) then begin
274      section, tab, z2d, glam, gphi, ENDPOINTS = endpoints, TYPE = type, BOITE = boite, DIREC = direc
275      nx = n_elements(glam)
276      ny = nx
277      if strupcase(vargrid) EQ 'W' then begin
278         z = gdepw[premierzw:dernierzw]
279         nz = nzw
280      ENDIF ELSE BEGIN
281         z = gdept[premierzt:dernierzt]
282         nz = nzt
283      ENDELSE
284   ENDIF ELSE BEGIN
285      z2d = checkfield(tab, 'pltz', TYPE = type, BOITE = boite, DIREC = direc, _extra = ex)
286      if z2d[0] EQ -1 then BEGIN
287         if keyword_set(boite) AND n_elements(oldboite) NE 0 then domdef, oldboite, GRILLE=vargrid
288         return
289      ENDIF
290      grille,mask,glam,gphi,z,nx,ny,nz
291   ENDELSE
292;---------------------------------------------------------------
293   profmax = !y.range[0]
294   profmin = !y.range[1]
295   if not keyword_set(zoom) then zoom=200
296   zoom = zoom[0]
297   if zoom GE prof2 then zoom=profmax
298;--------------------------------------------------------------------
299; construction du mask
300;--------------------------------------------------------------------
301   mask = fltarr((size(z2d))[1],(size(z2d))[2] )
302   nan = total(finite(z2d,/nan))  < 1
303   if keyword_set(nan) then begin
304      notanum = where(finite(z2d) EQ 0)
305      z2d[notanum] = 0
306      mask(where(z2d LT valmask/10)) = 1
307      z2d[notanum] = !values.f_nan
308   ENDIF ELSE mask(where(z2d LT valmask/10)) = 1
309   if (where(mask EQ 0))[0] EQ -1 AND NOT keyword_set(nan) then notri = 1
310;-----------------------------------------------------------------------------
311;   determination du mi:min et du ma:max de tab1 ainsi que de max: max et
312;   min: min pour le dessin.
313;-----------------------------------------------------------------------------
314; faudra-t-il faire un autoscale ???
315   autoscale = testvar(var = min) EQ testvar(var = max) AND NOT keyword_set(intervalle)
316   determineminmax, z2d,mask, mi, ma, MININ = min, MAXIN = max, nan = nan,INTERVALLE=intervalle
317   if z2d[0] EQ -1 THEN GOTO, sortie
318; on fait un autoscale si besoin
319   if autoscale then autoscale, min, max, intervalle
320;--------------------------------------------------------------
321   z2d=reverse(z2d,2)
322   mask=reverse(mask,2)
323;--------------------------------------------------------------
324;--------------------------------------------------------------
325; 2eme partie: dessin
326;--------------------------------------------------------------
327;--------------------------------------------------------------
328   if n_elements(contour) NE 4 AND NOT keyword_set(overplot) THEN $
329    placedessin, 'pltz',posfenetre, posbar, contour = contour, endpoints = endpoints $
330    , direc = direc, _extra = ex
331;------------------------------------------------------------
332;--------------------------------------------------------------
333; choix des labels
334;-----------------------------------------------------------
335   if keyword_set(intervalle) AND NOT keyword_set(label) then label=1
336   if keyword_set(label) eq 0 then cas=0 else cas=label
337   label,cas,min,max,ncontour,level_z2d,NLEVEL=nlevel,INTERVALLE=intervalle $
338    , strictfill = strictfill
339;--------------------------------------------------------------
340; choix de style
341;-----------------------------------------------------------
342   if not keyword_set(style) then style=0
343   style,style,level_z2d,linestyle,thick
344   if keyword_set(inv) then couleur=reverse(couleur)
345;-----------------------------------------------------------
346;   definition des axes
347;----------------------------------------------------------
348   if NOT keyword_set(overplot) THEN axe, coupe, SIN = sin, _EXTRA = ex
349   if keyword_set(reverse_y) then !y.range=[0, -1] ELSE !y.range = [-1, 0]
350;----------------------------------------------------------
351; on projette l''axe z dans [0,1]
352;----------------------------------------------------------
353   if not keyword_set(hzsurht) then hzsurht=2./3
354   if zoom ge profmax then hzsurht=1.
355   if zoom LT profmax then begin
356      mp = projsegment([profmin, zoom], [0, hzsurht], /mp)
357      z[where(z LE zoom)] = mp[0]*z[where(z LE zoom)]+mp[1]
358      mp = projsegment([zoom, profmax], [hzsurht, 1], /mp)
359      z[where(z GE zoom)] = mp[0]*z[where(z GE zoom)]+mp[1]
360   ENDIF ELSE BEGIN
361      mp = projsegment([profmin, profmax], [0, 1], /mp)
362      z = mp[0]*z+mp[1]
363   ENDELSE
364   z=reverse(-z,1)
365;----------------------------------------------------------
366; on passe les axes en tableaux 2d pour pouvoir utiliser la
367; trianguletion
368;----------------------------------------------------------
369   if coupe eq 'yz' then BEGIN
370      if (size(gphi))[0] EQ 2 then x=reform(gphi[0, *]) ELSE x=gphi
371      if keyword_set(sin) then x = sin(!pi/180.*x)
372      x = x#replicate(1, nz)
373      z = replicate(1, ny)#z
374   ENDIF ELSE BEGIN
375      x = glam[*, 0]#replicate(1, nz)
376      z = replicate(1, nx)#z
377   ENDELSE
378;--------------------------------------------------------------
379; extrapolation des donnees sur les terres et seuillage
380;--------------------------------------------------------------
381   if keyword_set(nan) then begin
382      notanumber = where(finite(z2d, /nan) EQ 1)
383      z2d[notanumber] = max
384      if coupe eq 'yz' then masknan = replicate(1, ny, nz) ELSE masknan = replicate(1, nx, nz)
385      masknan[notanumber] = 0
386   ENDIF ELSE masknan = 1
387   z2d = remplit(z2d,nite=1+keyword_set(nan), mask = mask*masknan, /basique, _extra=ex)
388   if NOT keyword_set(strictfill) then z2d = min > z2d <  max
389   if keyword_set(notri) then triangulation = -1 ELSE $
390    triangulation = triangule(mask*masknan,/regulier,coinmonte=coinmontemask,coindescend=coindescendmask)
391;------------------------------------------------------------
392; dessin en lui meme
393;------------------------------------------------------------
394   pltbase, z2d,x, z, mask,x, z, level_z2d,couleur, overplot = overplot $
395    , contour = contour, trichamp = triangulation, trimsk = triangulation  $
396    , c_linestyle=linestyle,c_labels=1-(indgen(n_elements(level_z2d)) MOD 2) $
397    , c_thick=thick,unsur2 = unsur2 $
398    , coinmontemask=-1,coindescendmask=-1, masknan = masknan $
399    , _extra = ex
400;------------------------------------------------------------
401; rappelle de plt en boucle qd contour est active
402;------------------------------------------------------------
403   if n_elements(contour) eq 4 then BEGIN ; c''est la 2eme fois que je passe ds pltt
404      contour = {mietma:[mi, ma], unit:varunit, inter:intervalle} ; je renvoie le min, le max et l''unite
405      if keyword_set(vraiboite) then boite = vraiboite
406      return
407   endif
408   if keyword_set(contour) THEN BEGIN
409      pourlegende = [1, 1, 1, 1]
410      oldattributs = saveatt()
411      oldcouleur = couleur
412      pltz,contour,contmin,contmax,CONTOUR=pourlegende,HZSURHT=hzsurht $
413       ,INTERVALLE=contintervalle,LABEL=contlabel,STYLE=style, /noerase, NOTRI = notri  $
414       ,NLEVEL=contnlevel,ZOOM=zoom,BOITE=vraiboite,ENDPOINTS=endpoints, STRICTFILL = strictfill $
415       , _extra = ex
416      restoreatt, oldattributs
417      couleur = oldcouleur
418   ENDIF
419;------------------------------------------------------------
420;------------------------------------------------------------
421; 3eme partie: dessin du cadre, legendes, colorbar...
422;------------------------------------------------------------
423   if keyword_set(overplot) then BEGIN
424      !y.range =  [zoom, profmin] ; on repasse en coordonees physiques!
425      plot,[0], [0],/nodata, /noerase, title = '', subtitle = '', xstyle = 5, ystyle = 5
426      GOTO, fini
427   endif
428;------------------------------------------------------------
429; legendes + affichage de celles-ci
430;------------------------------------------------------------
431   legende,mi,ma,coupe, CONTOUR = pourlegende, INTERVALLE = intervalle, DIREC = direc, endpoints = endpoints, _EXTRA = ex
432   if coupe eq 'yz' then xaxe='lataxe' else xaxe='lonaxe'
433   if keyword_set(sin) then xaxe = ''
434; cadre applique par defaut
435   plot,[x[0], x[n_elements(x)-1]],[-hzsurht,-hzsurht],/noerase,color=c_cote $
436    ,xstyle=1+4*(keyword_set(endpoints) AND ((type EQ 'xz' AND lat1 NE lat2) OR (type EQ 'yz' AND lon1 NE lon2))) $
437    ,xtickformat=xaxe, _extra = ex
438; ajout d'un axe ds le cas ou l'on utilise endpoints
439   if keyword_set(endpoints) then addaxe, endpoints, type, posfenetre, _EXTRA = ex
440;------------------------------------------------------------
441; axe y en 1 ou 2 parties
442;------------------------------------------------------------
443   if n_elements(ex) NE 0 then BEGIN
444; pour ne plus mettre de titre
445      if (where(tag_names(ex) EQ 'TITLE'))[0] NE -1 then ex.TITLE = ' '
446; pour ne plus mettre de sous titre
447      if (where(tag_names(ex) EQ 'SUBTITLE'))[0] NE -1 then ex.SUBTITLE = ' '
448; pour n''avoir q''un ytitle
449      if (where(tag_names(ex) EQ 'YTITLE'))[0] NE -1 then BEGIN
450         ytitle = ex.YTITLE
451         ex.YTITLE = ' '
452      endif
453   ENDIF
454   htotal=posfenetre[3]-posfenetre[1]
455   hzoom=1.*hzsurht*htotal
456   if zoom LT profmax then $
457    plot,[0], [0],/noerase,color=c_cote,ystyle=1, yrange = [profmax, zoom+0.001] $
458    , position=posfenetre+[0,0,0,-hzoom], _extra = ex, title = '', subtitle = '', ytitle = ''
459;
460   !y.range =  [zoom, profmin]  ; on repasse en coordonees physiques!
461   plot,[0], [0],/noerase,color=c_cote,ystyle=1, _extra = ex $
462    , title = '', subtitle = '', ytitle = '', position=posfenetre+[0,htotal-hzoom,0,0]
463;------------------------------------------------------------
464; pour ecrire le ytitle...
465;------------------------------------------------------------
466   if !d.name EQ 'PS' then $
467    xs = (grandfeuille*(1-key_portrait)+petitfeuille*key_portrait)*!d.x_px_cm $
468   ELSE xs = !d.x_size
469   if n_elements(ytitle) NE 0 then !y.title = ytitle
470   charsize = chkstru(ex, 'ycharsize', /extract)
471   if charsize EQ -1 then charsize = !p.charsize
472   IF chkstru(ex, 'charsize') THEN ex.charsize = charsize
473   if chkstru(ex, 'ytitle', /extract) NE '' then $
474   decalage = string(format='(e10.3)',profmax)
475   decalage = float(strmid(decalage,strpos(decalage,'e')+1))
476   posy=posfenetre[1]+1.*htotal/2
477   posx=posfenetre[0]-(decalage+3)*!d.x_ch_size*charsize/xs
478    xyouts,posx,posy,!y.title, /normal,orientation=90,color=0,ALIGNMENT = .5, charsize = charsize, _extra = ex
479
480;------------------------------------------------------------
481; barre de couleur
482;------------------------------------------------------------
483   couleur = couleur[0:ncontour-1-keyword_set(strictfill)]
484   barrecouleur, position=posbar,divisions=(ncontour-keyword_set(strictfill))/2,min=min $
485    , max=max,discret=couleur,_extra = ex
486;------------------------------------------------------------
487;------------------------------------------------------------
488; 4eme partie: impression eventuelle
489;------------------------------------------------------------
490;------------------------------------------------------------
491fini:
492   if keyword_set(oldboite) then domdef, oldboite,GRILLE=[vargrid, 'T']
493   terminedessin, _extra = ex
494   if keyword_set(vraiboite) then boite = vraiboite
495;------------------------------------------------------------
496;------------------------------------------------------------
497;------------------------------------------------------------
498;------------------------------------------------------------
499sortie:
500   if keyword_set(key_performance) NE 0 THEN print, 'temps pltz', systime(1)-tempsun
501   return
502end
503
504
505
Note: See TracBrowser for help on using the repository browser.