Changeset 226 for trunk/SRC/ToBeReviewed/PLOTS/DESSINE/pltz.pro
- Timestamp:
- 03/16/07 10:22:26 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/ToBeReviewed/PLOTS/DESSINE/pltz.pro
r172 r226 4 4 ;+ 5 5 ; 6 ; @file_comments 6 ; @file_comments 7 7 ; Trace vertical graphs. 8 8 ; 9 ; @categories 9 ; @categories 10 10 ; Graphics 11 11 ; 12 ; @param TAB 12 ; @param TAB 13 13 ; The field whose we want to make a vertical cut can be 2 kind of thing: 14 ; 1) An 2d or 3d array. 15 ; If the field is 2d, indicate, with the keyword BOXZOOM, geographic delineations of the boxzoom. 14 ; 1) An 2d or 3d array. 15 ; If the field is 2d, indicate, with the keyword BOXZOOM, geographic delineations of the boxzoom. 16 16 ; If the field is 3d, we extract the section on we average possibly before to do the plot. 17 ; 2) a structure respecting all criterions specified by litchamp.pro. 17 ; 2) a structure respecting all criterions specified by litchamp.pro. 18 18 ; See IDL> xhelp,'litchamp'. The array contained in the structure must be 2 or 3d (See case 1) 19 19 ; 20 20 ; ces arguments ne sont pas obligatoires: 21 ; 21 ; 22 22 ; MAX: valeur maximum que l'on veut prendre en compte dans le trace 23 23 ; des contours. Par defaut on prend le max de tab1 (sur les pts mer) … … 26 26 ; des contours. Par defaut on prend le min de tab1 (sur les pts mer) 27 27 ; 28 ; @keyword BOXZOOM 29 ; Vector indicating the geographic zone on which we want to cut the map. 28 ; @keyword BOXZOOM 29 ; Vector indicating the geographic zone on which we want to cut the map. 30 30 ; If BOXZOOM has : 31 31 ; 1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]] … … 37 37 ; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef! 38 38 ; 39 ; @keyword CONTINTERVALLE 40 ; When CONTOUR is activated, it is the value between 2 isolines 41 ; traced by a trait. So it can be different from the one specified by INTERVALLE which, 42 ; in this case, does not control colored isolines in color anymore. If there is noone 43 ; specified min, we choose a contour min which goes well with the specified interval! 44 ; If this keyword is not specified, we trace 20 isolines from the min to the max. 39 ; @keyword CONTINTERVALLE 40 ; When CONTOUR is activated, it is the value between 2 isolines 41 ; traced by a trait. So it can be different from the one specified by INTERVALLE which, 42 ; in this case, does not control colored isolines in color anymore. If there is noone 43 ; specified min, we choose a contour min which goes well with the specified interval! 44 ; If this keyword is not specified, we trace 20 isolines from the min to the max. 45 45 ; 46 46 ; @keyword CONTLABEL {type=integer} 47 47 ; When CONTOUR is activated, if n 48 ; is different of 0, choose the label type corresponding to n cases for 49 ; the traced by a traitisolines. To specify the type of label of the 48 ; is different of 0, choose the label type corresponding to n cases for 49 ; the traced by a traitisolines. To specify the type of label of the 50 50 ; colored contour, use LABEL 51 51 ; 52 52 ; @keyword CONTMAX {default=max of the keyword CONTOUR (on ocean points)} 53 ; When CONTOUR is activated, max value we want to consider in the isoline 53 ; When CONTOUR is activated, max value we want to consider in the isoline 54 54 ; traced by a trait's line. 55 55 ; 56 56 ; @keyword CONTMIN {default=min of the keyword CONTOUR (on ocean points)} 57 ; When CONTOUR is activated, min value we want to consider in the isoline 58 ; traced by a trait's line. 57 ; When CONTOUR is activated, min value we want to consider in the isoline 58 ; traced by a trait's line. 59 59 ; 60 60 ; @keyword CONTNLEVEL {default=20} … … 63 63 ; CONTLABEL=0). 64 64 ; 65 ; @keyword CONTOUR 66 ; If we want to trace contours of a different field than the one 67 ; whose we have the colored drawing (by example E-P in color and QSR in contours). 65 ; @keyword CONTOUR 66 ; If we want to trace contours of a different field than the one 67 ; whose we have the colored drawing (by example E-P in color and QSR in contours). 68 68 ; It must be a field respecting same characteristics than the argument number one of plt. 69 69 ; 70 ; @keyword ENDPOINTS 71 ; keyword specifying that we want to make a vertical cut in diagonal. Then coordinated of extremities 72 ; of these one are defined by the 4 elements of the vector ENDPOINTS: [x1,y1,x2,y2] which are 73 ; coordinates. 74 ; 75 ; @keyword INTERVALLE 76 ; Value of an internal between to isoline. If there is none specified min, 77 ; we choose a min contour which goes well with the specified interval!. If this keyword is not 78 ; specified, we trace 20 isoline from the min to the max. Comment: When CONTOUR is activated, 79 ; INTERVALLE only specify the interval between 2 colored isoline. To specify the interval 70 ; @keyword ENDPOINTS 71 ; keyword specifying that we want to make a vertical cut in diagonal. Then coordinated of extremities 72 ; of these one are defined by the 4 elements of the vector ENDPOINTS: [x1,y1,x2,y2] which are 73 ; coordinates. 74 ; 75 ; @keyword INTERVALLE 76 ; Value of an internal between to isoline. If there is none specified min, 77 ; we choose a min contour which goes well with the specified interval!. If this keyword is not 78 ; specified, we trace 20 isoline from the min to the max. Comment: When CONTOUR is activated, 79 ; INTERVALLE only specify the interval between 2 colored isoline. To specify the interval 80 80 ; between 2 isolines traced by a trait, use CONTINTERVALLE. 81 81 ; 82 ; @keyword INV 83 ; Invert the color vector used to color the graph 82 ; @keyword INV 83 ; Invert the color vector used to color the graph 84 84 ; (without use the black, the white and the used palette) 85 85 ; 86 86 ; @keyword ZRATIO {default=2./3} 87 ; When the drawing has a zoomed part, it is the size rapport between the zoomed part, 87 ; When the drawing has a zoomed part, it is the size rapport between the zoomed part, 88 88 ; hz (zoom height), and the whole drawing, ht (total height). 89 89 ; 90 90 ; @keyword LABEL {default=0}{type=integer} 91 91 ; It choose the label's type corresponding to cases in label.pro. 92 ; Comment: When CONTOUR is activated, it only specify the label's type for colored isolines. 93 ; For these one traced by a trait, use CONTLABEL. 94 ; 95 ; @keyword MAXIN 92 ; Comment: When CONTOUR is activated, it only specify the label's type for colored isolines. 93 ; For these one traced by a trait, use CONTLABEL. 94 ; 95 ; @keyword MAXIN 96 96 ; to specify the max value we want to plot with a keyword instead of with the 97 97 ; input parameter max. If max is defined by both, parameter and keyword, the 98 98 ; keyword is retained. 99 99 ; 100 ; @keyword MININ 100 ; @keyword MININ 101 101 ; to specify the min value we want to plot with a keyword instead of with the 102 102 ; input parameter min. If min is defined by both, parameter and keyword, the … … 106 106 ; Number of contour to draw by default =20. active if 107 107 ; LABEL=0 or is not specified. 108 ; 109 ; @keyword NOTRI 110 ; To force not to use the triangulation. Beware, in this case, the 111 ; drawing only works if the grid is undeformed (It means that each point of a longitude 112 ; give one latitude and each point of a latitude give one longitude) except if we use 113 ; the keyword CELL_FILL=2. 108 ; 109 ; @keyword NOTRI 110 ; To force not to use the triangulation. Beware, in this case, the 111 ; drawing only works if the grid is undeformed (It means that each point of a longitude 112 ; give one latitude and each point of a latitude give one longitude) except if we use 113 ; the keyword CELL_FILL=2. 114 114 ; Comment: if the field contain points !values.f_nan, then we even do a triangulation. 115 115 ; 116 ; @keyword OVERPLOT 117 ; To make a plot over an other one. 118 ; Comment: Contrarily to the use of CONTOUR or VECTEUR, the use of this keyword 116 ; @keyword OVERPLOT 117 ; To make a plot over an other one. 118 ; Comment: Contrarily to the use of CONTOUR or VECTEUR, the use of this keyword 119 119 ; does not the caption and/or the color bar. 120 120 ; 121 ; @keyword SIN 122 ; Activate this keyword if we want the x axis to be traced in sinus of the 121 ; @keyword SIN 122 ; Activate this keyword if we want the x axis to be traced in sinus of the 123 123 ; latitude when we make a drawing f(y) 124 124 ; 125 ; @keyword STRICTFILL 126 ; Activate this keyword to that the filling of contours be 127 ; precisely done between the min and the max specified letting values inferior at the 125 ; @keyword STRICTFILL 126 ; Activate this keyword to that the filling of contours be 127 ; precisely done between the min and the max specified letting values inferior at the 128 128 ; specified min and values superior at the specified max in white. 129 129 ; … … 131 131 ; Contour's style to adopt to draw isolines 132 132 ; 133 ; @keyword WDEPTH 134 ; To specify that the field is at W depth instead of T 133 ; @keyword WDEPTH 134 ; To specify that the field is at W depth instead of T 135 135 ; depth (automatically activated if vargrid eq 'W') 136 136 ; … … 209 209 IF usetri EQ 1 AND keyword_set(realsection) THEN usetri = 0 210 210 ; did we specify the type ? 211 if keyword_set(typein) then BEGIN 211 if keyword_set(typein) then BEGIN 212 212 if size(type, /type) NE 7 AND size(type, /type) NE 0 then begin 213 213 if n_elements(min) NE 0 then max = min … … 216 216 type = typein 217 217 ENDIF 218 ; 218 ; 219 219 checktypeminmax, 'pltz', TYPE = type, MIN = min, MAX = max $ 220 220 , XZ = xz, YZ = yz, ENDPOINTS = endpoints, _extra = ex 221 221 ; 222 222 if keyword_set(endpoints) then begin 223 section, tab, z2d, glam, gphi, ENDPOINTS = endpoints, TYPE = type $ 223 section, tab, z2d, glam, gphi, ENDPOINTS = endpoints, TYPE = type $ 224 224 , BOXZOOM = boxzoom, DIREC = direc, WDEPTH = wdepth, _extra = ex 225 if z2d[0] EQ -1 AND n_elements(contour) ne 4 then BEGIN 225 if z2d[0] EQ -1 AND n_elements(contour) ne 4 then BEGIN 226 226 restoreboxparam, 'boxparam4pltz.dat' 227 227 return 228 228 ENDIF 229 nx = n_elements(glam) 229 nx = n_elements(glam) 230 230 ny = nx 231 231 if strupcase(vargrid) EQ 'W' then begin … … 240 240 z2d = checkfield(tab, 'pltz', TYPE = type, BOXZOOM = boxzoom $ 241 241 , DIREC = direc, WDEPTH = wdepth, _extra = ex) 242 if z2d[0] EQ -1 AND n_elements(contour) ne 4 then BEGIN 242 if z2d[0] EQ -1 AND n_elements(contour) ne 4 then BEGIN 243 243 restoreboxparam, 'boxparam4pltz.dat' 244 244 return … … 260 260 z2d = reverse(z2d, 2) 261 261 ;----------------------------------------------------------------------------- 262 ; Determination of the mi:min and of the ma:max of z2d in the same way 262 ; Determination of the mi:min and of the ma:max of z2d in the same way 263 263 ; as max: max and min: min for the drawing. 264 264 ;----------------------------------------------------------------------------- … … 316 316 z2d = remplit(z2d, nite = 1-(n_elements(maskfill) NE 0) $ 317 317 , mask = z2d LT valmask/10, /basique, _extra = ex) 318 ENDIF ELSE BEGIN 318 ENDIF ELSE BEGIN 319 319 ; filling the mask values with 8 neighbourg 320 320 z2d = remplit(z2d, nite = (1+(vargrid NE 'T')+keyword_set(nan)) $ 321 321 *(1-(n_elements(maskfill) NE 0)), mask = mask*masknan $ 322 322 , /basique, _extra = ex) 323 ENDELSE 323 ENDELSE 324 324 if keyword_set(strictfill) EQ 0 AND n_elements(maskfill) EQ 0 $ 325 325 then z2d = min > z2d < max … … 329 329 ENDIF 330 330 ;---------------------------------------------------------- 331 ; check the mask and the triangulation according to the grid type and 331 ; check the mask and the triangulation according to the grid type and 332 332 ; nan values. find the coordinates of the mask 333 ;---------------------------------------------------------- 333 ;---------------------------------------------------------- 334 334 ; if (where(mask EQ 0))[0] EQ -1 AND NOT keyword_set(nan) then notri = 1 335 335 ; if keyword_set(notri) then trifield = -1 $ … … 347 347 xmask = xxaxis 348 348 zmask = zzaxis 349 ENDELSE 350 ; 351 if (usetri GE 1 AND (vargrid NE 'T' AND vargrid NE 'W')) THEN BEGIN 349 ENDELSE 350 ; 351 if (usetri GE 1 AND (vargrid NE 'T' AND vargrid NE 'W')) THEN BEGIN 352 352 IF keyword_set(realsection) THEN trimsk = triangule(mask, /basic) $ 353 353 ELSE trimsk = triangule(mask, /basic, coinmonte = coinmontemask $ 354 354 , coindescend = coindescendmask) 355 ENDIF 355 ENDIF 356 356 ;------------------------------------------------------------ 357 357 ; dessin en lui meme … … 387 387 return 388 388 endif 389 if keyword_set(contour) THEN BEGIN 389 if keyword_set(contour) THEN BEGIN 390 390 pourlegende = [1, 1, 1, 1] 391 391 oldattributs = saveatt() … … 403 403 ; 3rd part: drawing of the frame, caption, colorbar... 404 404 ;------------------------------------------------------------ 405 if keyword_set(overplot) then BEGIN 405 if keyword_set(overplot) then BEGIN 406 406 !y.range = [zoom, profmin] ; We get back on physic coordinates 407 407 plot, [0], [0], /nodata, /noerase, title = '', subtitle = '', xstyle = 5, ystyle = 5 … … 409 409 endif 410 410 ;------------------------------------------------------------ 411 ; Caption + d ysplay of them411 ; Caption + display of them 412 412 ;------------------------------------------------------------ 413 413 legende, mi, ma, type, CONTOUR = pourlegende, INTERVALLE = intervalle, DIREC = direc, endpoints = endpoints, _EXTRA = ex … … 423 423 ; Y axis in 1 or 2 part 424 424 ;------------------------------------------------------------ 425 if n_elements(ex) NE 0 then BEGIN 425 if n_elements(ex) NE 0 then BEGIN 426 426 ; To do not put title anymore 427 427 if (where(tag_names(ex) EQ 'TITLE'))[0] NE -1 then ex.TITLE = ' ' … … 429 429 if (where(tag_names(ex) EQ 'SUBTITLE'))[0] NE -1 then ex.SUBTITLE = ' ' 430 430 ; To have just one ytitle 431 if (where(tag_names(ex) EQ 'YTITLE'))[0] NE -1 then BEGIN 431 if (where(tag_names(ex) EQ 'YTITLE'))[0] NE -1 then BEGIN 432 432 ytitle = ex.YTITLE 433 433 ex.YTITLE = ' ' … … 480 480 restoreboxparam, 'boxparam4pltz.dat' 481 481 ; 482 if keyword_set(key_performance) NE 0 THEN print, 'temps pltz', systime(1)-tempsun 482 if keyword_set(key_performance) NE 0 THEN print, 'temps pltz', systime(1)-tempsun 483 483 return 484 484 end
Note: See TracChangeset
for help on using the changeset viewer.