1 | ;+ |
---|
2 | ; NAME: |
---|
3 | ; COLORBAR |
---|
4 | ; |
---|
5 | ; PURPOSE: |
---|
6 | ; |
---|
7 | ; The purpose of this routine is to add a color bar to the current |
---|
8 | ; graphics window. |
---|
9 | ; |
---|
10 | ; AUTHOR: |
---|
11 | ; |
---|
12 | ; FANNING SOFTWARE CONSULTING |
---|
13 | ; David Fanning, Ph.D. |
---|
14 | ; 1645 Sheely Drive |
---|
15 | ; Fort Collins, CO 80526 USA |
---|
16 | ; Phone: 970-221-0438 |
---|
17 | ; E-mail: davidf@dfanning.com |
---|
18 | ; Coyote's Guide to IDL Programming: http://www.dfanning.com/ |
---|
19 | ; |
---|
20 | ; CATEGORY: |
---|
21 | ; |
---|
22 | ; Graphics, Widgets. |
---|
23 | ; |
---|
24 | ; CALLING SEQUENCE: |
---|
25 | ; |
---|
26 | ; COLORBAR |
---|
27 | ; |
---|
28 | ; INPUTS: |
---|
29 | ; |
---|
30 | ; None. |
---|
31 | ; |
---|
32 | ; KEYWORD PARAMETERS: |
---|
33 | ; |
---|
34 | ; ANNOTATECOLOR: The name of the "annotation color" to use. The names are those for |
---|
35 | ; FSC_COLOR, and using the keyword implies that FSC_COLOR is also in |
---|
36 | ; your !PATH. If this keyword is used, the annotation color is loaded |
---|
37 | ; *after* the color bar is displayed. The color will be represented |
---|
38 | ; as theColor = FSC_COLOR(ANNOTATECOLOR, COLOR). This keyword is provide |
---|
39 | ; to maintain backward compatibility, but also to solve the problem of |
---|
40 | ; and extra line in the color bar when this kind of syntax is used in |
---|
41 | ; conjunction with the indexed (DEVICE, DECOMPOSED=0) model is used: |
---|
42 | ; |
---|
43 | ; LoadCT, 33 |
---|
44 | ; TVImage, image |
---|
45 | ; Colorbar, Color=FSC_Color('firebrick') |
---|
46 | ; |
---|
47 | ; The proper syntax for device-independent color is like this: |
---|
48 | ; |
---|
49 | ; LoadCT, 33 |
---|
50 | ; TVImage, image |
---|
51 | ; Colorbar, AnnotateColor='firebrick', Color=255 |
---|
52 | ; |
---|
53 | ; BOTTOM: The lowest color index of the colors to be loaded in |
---|
54 | ; the bar. |
---|
55 | ; |
---|
56 | ; CHARSIZE: The character size of the color bar annotations. Default is !P.Charsize. |
---|
57 | ; |
---|
58 | ; COLOR: The color index of the bar outline and characters. Default |
---|
59 | ; is !P.Color.. |
---|
60 | ; |
---|
61 | ; DIVISIONS: The number of divisions to divide the bar into. There will |
---|
62 | ; be (divisions + 1) annotations. The default is 6. |
---|
63 | ; |
---|
64 | ; FONT: Sets the font of the annotation. Hershey: -1, Hardware:0, True-Type: 1. |
---|
65 | ; |
---|
66 | ; FORMAT: The format of the bar annotations. Default is '(I0)'. |
---|
67 | ; |
---|
68 | ; INVERTCOLORS: Setting this keyword inverts the colors in the color bar. |
---|
69 | ; |
---|
70 | ; MAXRANGE: The maximum data value for the bar annotation. Default is |
---|
71 | ; NCOLORS. |
---|
72 | ; |
---|
73 | ; MINRANGE: The minimum data value for the bar annotation. Default is 0. |
---|
74 | ; |
---|
75 | ; MINOR: The number of minor tick divisions. Default is 2. |
---|
76 | ; |
---|
77 | ; NCOLORS: This is the number of colors in the color bar. |
---|
78 | ; |
---|
79 | ; NODISPLAY: COLORBAR uses FSC_COLOR to specify some of it colors. Normally, |
---|
80 | ; FSC_COLOR loads "system" colors as part of its palette of colors. |
---|
81 | ; In order to do so, it has to create an IDL widget, which in turn |
---|
82 | ; has to make a connection to the windowing system. If your program |
---|
83 | ; is being run without a window connection, then this program will |
---|
84 | ; fail. If you can live without the system colors (and most people |
---|
85 | ; don't even know they are there, to tell you the truth), then setting |
---|
86 | ; this keyword will keep them from being loaded, and you can run |
---|
87 | ; COLORBAR without a display. |
---|
88 | ; |
---|
89 | ; POSITION: A four-element array of normalized coordinates in the same |
---|
90 | ; form as the POSITION keyword on a plot. Default is |
---|
91 | ; [0.88, 0.10, 0.95, 0.90] for a vertical bar and |
---|
92 | ; [0.10, 0.88, 0.90, 0.95] for a horizontal bar. |
---|
93 | ; |
---|
94 | ; RANGE: A two-element vector of the form [min, max]. Provides an |
---|
95 | ; alternative way of setting the MINRANGE and MAXRANGE keywords. |
---|
96 | ; |
---|
97 | ; REVERSE: Setting this keyword reverses the colors in the colorbar. |
---|
98 | ; |
---|
99 | ; RIGHT: This puts the labels on the right-hand side of a vertical |
---|
100 | ; color bar. It applies only to vertical color bars. |
---|
101 | ; |
---|
102 | ; TICKNAMES: A string array of names or values for the tick marks. |
---|
103 | ; |
---|
104 | ; TITLE: This is title for the color bar. The default is to have |
---|
105 | ; no title. |
---|
106 | ; |
---|
107 | ; TOP: This puts the labels on top of the bar rather than under it. |
---|
108 | ; The keyword only applies if a horizontal color bar is rendered. |
---|
109 | ; |
---|
110 | ; VERTICAL: Setting this keyword give a vertical color bar. The default |
---|
111 | ; is a horizontal color bar. |
---|
112 | ; |
---|
113 | ; COMMON BLOCKS: |
---|
114 | ; |
---|
115 | ; None. |
---|
116 | ; |
---|
117 | ; SIDE EFFECTS: |
---|
118 | ; |
---|
119 | ; Color bar is drawn in the current graphics window. |
---|
120 | ; |
---|
121 | ; RESTRICTIONS: |
---|
122 | ; |
---|
123 | ; The number of colors available on the graphics display device (not the |
---|
124 | ; PostScript device) is used unless the NCOLORS keyword is used. |
---|
125 | ; |
---|
126 | ; Requires the FSC_COLOR program from the Coyote Library: |
---|
127 | ; |
---|
128 | ; http://www.dfanning.com/programs/fsc_color.pro |
---|
129 | ; |
---|
130 | ; EXAMPLE: |
---|
131 | ; |
---|
132 | ; To display a horizontal color bar above a contour plot, type: |
---|
133 | ; |
---|
134 | ; LOADCT, 5, NCOLORS=100 |
---|
135 | ; CONTOUR, DIST(31,41), POSITION=[0.15, 0.15, 0.95, 0.75], $ |
---|
136 | ; C_COLORS=INDGEN(25)*4, NLEVELS=25 |
---|
137 | ; COLORBAR, NCOLORS=100, POSITION=[0.15, 0.85, 0.95, 0.90] |
---|
138 | ; |
---|
139 | ; MODIFICATION HISTORY: |
---|
140 | ; |
---|
141 | ; Written by: David W. Fanning, 10 JUNE 96. |
---|
142 | ; 10/27/96: Added the ability to send output to PostScript. DWF |
---|
143 | ; 11/4/96: Substantially rewritten to go to screen or PostScript |
---|
144 | ; file without having to know much about the PostScript device |
---|
145 | ; or even what the current graphics device is. DWF |
---|
146 | ; 1/27/97: Added the RIGHT and TOP keywords. Also modified the |
---|
147 | ; way the TITLE keyword works. DWF |
---|
148 | ; 7/15/97: Fixed a problem some machines have with plots that have |
---|
149 | ; no valid data range in them. DWF |
---|
150 | ; 12/5/98: Fixed a problem in how the colorbar image is created that |
---|
151 | ; seemed to tickle a bug in some versions of IDL. DWF. |
---|
152 | ; 1/12/99: Fixed a problem caused by RSI fixing a bug in IDL 5.2. Sigh... DWF. |
---|
153 | ; 3/30/99: Modified a few of the defaults. DWF. |
---|
154 | ; 3/30/99: Used NORMAL rather than DEVICE coords for positioning bar. DWF. |
---|
155 | ; 3/30/99: Added the RANGE keyword. DWF. |
---|
156 | ; 3/30/99: Added FONT keyword. DWF |
---|
157 | ; 5/6/99: Many modifications to defaults. DWF. |
---|
158 | ; 5/6/99: Removed PSCOLOR keyword. DWF. |
---|
159 | ; 5/6/99: Improved error handling on position coordinates. DWF. |
---|
160 | ; 5/6/99. Added MINOR keyword. DWF. |
---|
161 | ; 5/6/99: Set Device, Decomposed=0 if necessary. DWF. |
---|
162 | ; 2/9/99: Fixed a problem caused by setting BOTTOM keyword, but not NCOLORS. DWF. |
---|
163 | ; 8/17/99. Fixed a problem with ambiguous MIN and MINOR keywords. DWF |
---|
164 | ; 8/25/99. I think I *finally* got the BOTTOM/NCOLORS thing sorted out. :-( DWF. |
---|
165 | ; 10/10/99. Modified the program so that current plot and map coordinates are |
---|
166 | ; saved and restored after the colorbar is drawn. DWF. |
---|
167 | ; 3/18/00. Moved a block of code to prevent a problem with color decomposition. DWF. |
---|
168 | ; 4/28/00. Made !P.Font default value for FONT keyword. DWF. |
---|
169 | ; 9/26/00. Made the code more general for scalable pixel devices. DWF. |
---|
170 | ; 1/16/01. Added INVERTCOLORS keyword. DWF. |
---|
171 | ; 5/11/04. Added TICKNAME keyword. DWF. |
---|
172 | ; 9/29/05. Added REVERSE keywords, which does the *exact* same thing as |
---|
173 | ; INVERTCOLORS, but I can never remember the latter keyword name. DWF. |
---|
174 | ; 1/2/07. Added ANNOTATECOLOR keyword. DWF. |
---|
175 | ; 4/14/07. Changed the default FORMAT to I0. DWF. |
---|
176 | ; 5/1/07. Unexpected consequence of default format change is colorbar annotations |
---|
177 | ; no longer match contour plot levels. Changed to explicit formating of |
---|
178 | ; colorbar axis labels before PLOT command. DWF. |
---|
179 | ; 5/25/07. Previous change has unanticipated effect on color bars using |
---|
180 | ; logarithmic scaling, which is not really supported, but I have an |
---|
181 | ; article on my web page describing how to do it: http://www.dfanning.com/graphics_tips/logcb.html. |
---|
182 | ; Thus, I've fixed the program to accommodate log scaling, while still not OFFICIALLY |
---|
183 | ; supporting it. DWF. |
---|
184 | ; 10/3/07. Method used to calculate TICKNAMES produces incorrect values in certain cases when |
---|
185 | ; the min and max range values are integers. Now force range values to be floats. DWF. |
---|
186 | ; 10/17/07. Accidentaly use of INTERP keyword in CONGRID results in wrong bar values for |
---|
187 | ; low NCOLORS numbers when INVERTCOLORS or REVERSE keyword is used. Removed INTERP keyword. DWF. |
---|
188 | ; 11/10/07. Finished fixing program to accommodate log scaling in ALL possible permutations. DWF. |
---|
189 | ; 8 Feb 2008. Added CRONJOB keyword and decided to use month names when I write the date. DWF. |
---|
190 | ; 8 Feb 2008. Renamed CRONJOB to NODISPLAY to better reflect its purpose. DWF. |
---|
191 | ; 21 May 2008. Changed the default CHARSIZE to !P.CHARSIZE from 1.0. DWF. |
---|
192 | ;- |
---|
193 | ; |
---|
194 | ;########################################################################### |
---|
195 | ; |
---|
196 | ; LICENSE |
---|
197 | ; |
---|
198 | ; This software is OSI Certified Open Source Software. |
---|
199 | ; OSI Certified is a certification mark of the Open Source Initiative. |
---|
200 | ; |
---|
201 | ; Copyright 2000-2008 Fanning Software Consulting. |
---|
202 | ; |
---|
203 | ; This software is provided "as-is", without any express or |
---|
204 | ; implied warranty. In no event will the authors be held liable |
---|
205 | ; for any damages arising from the use of this software. |
---|
206 | ; |
---|
207 | ; Permission is granted to anyone to use this software for any |
---|
208 | ; purpose, including commercial applications, and to alter it and |
---|
209 | ; redistribute it freely, subject to the following restrictions: |
---|
210 | ; |
---|
211 | ; 1. The origin of this software must not be misrepresented; you must |
---|
212 | ; not claim you wrote the original software. If you use this software |
---|
213 | ; in a product, an acknowledgment in the product documentation |
---|
214 | ; would be appreciated, but is not required. |
---|
215 | ; |
---|
216 | ; 2. Altered source versions must be plainly marked as such, and must |
---|
217 | ; not be misrepresented as being the original software. |
---|
218 | ; |
---|
219 | ; 3. This notice may not be removed or altered from any source distribution. |
---|
220 | ; |
---|
221 | ; For more information on Open Source Software, visit the Open Source |
---|
222 | ; web site: http://www.opensource.org. |
---|
223 | ; |
---|
224 | ;########################################################################### |
---|
225 | |
---|
226 | |
---|
227 | PRO COLORBAR, BOTTOM=bottom, CHARSIZE=charsize, COLOR=color, DIVISIONS=divisions, $ |
---|
228 | FORMAT=format, POSITION=position, MAXRANGE=maxrange, MINRANGE=minrange, NCOLORS=ncolors, $ |
---|
229 | TITLE=title, VERTICAL=vertical, TOP=top, RIGHT=right, MINOR=minor, $ |
---|
230 | RANGE=range, FONT=font, TICKLEN=ticklen, _EXTRA=extra, INVERTCOLORS=invertcolors, $ |
---|
231 | TICKNAMES=ticknames, REVERSE=reverse, ANNOTATECOLOR=annotatecolor, XLOG=xlog, YLOG=ylog, $ |
---|
232 | NODISPLAY=nodisplay |
---|
233 | |
---|
234 | compile_opt idl2 |
---|
235 | |
---|
236 | ; Return to caller on error. |
---|
237 | On_Error, 2 |
---|
238 | |
---|
239 | ; Save the current plot state. |
---|
240 | bang_p = !P |
---|
241 | bang_x = !X |
---|
242 | bang_Y = !Y |
---|
243 | bang_Z = !Z |
---|
244 | bang_Map = !Map |
---|
245 | |
---|
246 | ; Are scalable pixels available on the device? |
---|
247 | IF (!D.Flags AND 1) NE 0 THEN scalablePixels = 1 ELSE scalablePixels = 0 |
---|
248 | |
---|
249 | ; Which release of IDL is this? |
---|
250 | thisRelease = Float(!Version.Release) |
---|
251 | |
---|
252 | ; Check and define keywords. |
---|
253 | IF N_ELEMENTS(ncolors) EQ 0 THEN BEGIN |
---|
254 | |
---|
255 | ; Most display devices to not use the 256 colors available to |
---|
256 | ; the PostScript device. This presents a problem when writing |
---|
257 | ; general-purpose programs that can be output to the display or |
---|
258 | ; to the PostScript device. This problem is especially bothersome |
---|
259 | ; if you don't specify the number of colors you are using in the |
---|
260 | ; program. One way to work around this problem is to make the |
---|
261 | ; default number of colors the same for the display device and for |
---|
262 | ; the PostScript device. Then, the colors you see in PostScript are |
---|
263 | ; identical to the colors you see on your display. Here is one way to |
---|
264 | ; do it. |
---|
265 | |
---|
266 | IF scalablePixels THEN BEGIN |
---|
267 | oldDevice = !D.NAME |
---|
268 | |
---|
269 | ; What kind of computer are we using? SET_PLOT to appropriate |
---|
270 | ; display device. |
---|
271 | |
---|
272 | thisOS = !VERSION.OS_FAMILY |
---|
273 | thisOS = STRMID(thisOS, 0, 3) |
---|
274 | thisOS = STRUPCASE(thisOS) |
---|
275 | CASE thisOS of |
---|
276 | 'MAC': SET_PLOT, thisOS |
---|
277 | 'WIN': SET_PLOT, thisOS |
---|
278 | ELSE: SET_PLOT, 'X' |
---|
279 | ENDCASE |
---|
280 | |
---|
281 | ; Here is how many colors we should use. |
---|
282 | ncolors = !D.TABLE_SIZE |
---|
283 | SET_PLOT, oldDevice |
---|
284 | ENDIF ELSE ncolors = !D.TABLE_SIZE |
---|
285 | ENDIF |
---|
286 | IF N_ELEMENTS(bottom) EQ 0 THEN bottom = 0B |
---|
287 | IF N_ELEMENTS(charsize) EQ 0 THEN charsize = !P.Charsize |
---|
288 | IF N_ELEMENTS(format) EQ 0 THEN format = '(I0)' |
---|
289 | IF N_ELEMENTS(color) EQ 0 THEN color = !P.Color |
---|
290 | minrange = (N_ELEMENTS(minrange) EQ 0) ? 0. : Float(minrange) |
---|
291 | maxrange = (N_ELEMENTS(maxrange) EQ 0) ? Float(ncolors) : Float(maxrange) |
---|
292 | IF N_ELEMENTS(ticklen) EQ 0 THEN ticklen = 0.2 |
---|
293 | IF N_ELEMENTS(minor) EQ 0 THEN minor = 2 |
---|
294 | IF N_ELEMENTS(range) NE 0 THEN BEGIN |
---|
295 | minrange = Float(range[0]) |
---|
296 | maxrange = Float(range[1]) |
---|
297 | ENDIF |
---|
298 | IF N_ELEMENTS(divisions) EQ 0 THEN divisions = 6 |
---|
299 | IF N_ELEMENTS(font) EQ 0 THEN font = !P.Font |
---|
300 | IF N_ELEMENTS(title) EQ 0 THEN title = '' |
---|
301 | xlog = Keyword_Set(xlog) |
---|
302 | ylog = Keyword_Set(ylog) |
---|
303 | |
---|
304 | ; You can't have a format set *and* use ticknames. |
---|
305 | IF N_ELEMENTS(ticknames) NE 0 THEN format = "" |
---|
306 | |
---|
307 | ; If the format is NOT null, then format the ticknames yourself. |
---|
308 | IF (xlog XOR ylog) EQ 0 THEN BEGIN |
---|
309 | IF format NE "" THEN BEGIN |
---|
310 | step = (maxrange - minrange) / divisions |
---|
311 | levels = minrange > (Indgen(divisions+1) * step + minrange) < maxrange |
---|
312 | IF StrPos(StrLowCase(format), 'i') NE -1 THEN levels = Round(levels) |
---|
313 | ticknames = String(levels, Format=format) |
---|
314 | format = "" ; No formats allowed in PLOT call now that we have ticknames. |
---|
315 | ENDIF |
---|
316 | ENDIF |
---|
317 | |
---|
318 | IF KEYWORD_SET(vertical) THEN BEGIN |
---|
319 | bar = REPLICATE(1B,20) # BINDGEN(ncolors) |
---|
320 | IF Keyword_Set(invertcolors) THEN bar = Reverse(bar, 2) |
---|
321 | IF N_ELEMENTS(position) EQ 0 THEN BEGIN |
---|
322 | position = [0.88, 0.1, 0.95, 0.9] |
---|
323 | ENDIF ELSE BEGIN |
---|
324 | IF position[2]-position[0] GT position[3]-position[1] THEN BEGIN |
---|
325 | position = [position[1], position[0], position[3], position[2]] |
---|
326 | ENDIF |
---|
327 | IF position[0] GE position[2] THEN Message, "Position coordinates can't be reconciled." |
---|
328 | IF position[1] GE position[3] THEN Message, "Position coordinates can't be reconciled." |
---|
329 | ENDELSE |
---|
330 | ENDIF ELSE BEGIN |
---|
331 | bar = BINDGEN(ncolors) # REPLICATE(1B, 20) |
---|
332 | IF Keyword_Set(invertcolors) THEN bar = Reverse(bar, 1) |
---|
333 | IF N_ELEMENTS(position) EQ 0 THEN BEGIN |
---|
334 | position = [0.1, 0.88, 0.9, 0.95] |
---|
335 | ENDIF ELSE BEGIN |
---|
336 | IF position[3]-position[1] GT position[2]-position[0] THEN BEGIN |
---|
337 | position = [position[1], position[0], position[3], position[2]] |
---|
338 | ENDIF |
---|
339 | IF position[0] GE position[2] THEN Message, "Position coordinates can't be reconciled." |
---|
340 | IF position[1] GE position[3] THEN Message, "Position coordinates can't be reconciled." |
---|
341 | ENDELSE |
---|
342 | ENDELSE |
---|
343 | |
---|
344 | ; Scale the color bar. |
---|
345 | bar = BYTSCL(bar, TOP=(ncolors-1) < (255-bottom)) + bottom |
---|
346 | |
---|
347 | IF Keyword_Set(reverse) THEN BEGIN |
---|
348 | IF Keyword_Set(vertical) THEN bar = Reverse(bar,2) ELSE bar = Reverse(bar,1) |
---|
349 | ENDIF |
---|
350 | |
---|
351 | ; Get starting locations in NORMAL coordinates. |
---|
352 | xstart = position[0] |
---|
353 | ystart = position[1] |
---|
354 | |
---|
355 | ; Get the size of the bar in NORMAL coordinates. |
---|
356 | xsize = (position[2] - position[0]) |
---|
357 | ysize = (position[3] - position[1]) |
---|
358 | |
---|
359 | ; Display the color bar in the window. Sizing is |
---|
360 | ; different for PostScript and regular display. |
---|
361 | IF scalablePixels THEN BEGIN |
---|
362 | |
---|
363 | TV, bar, xstart, ystart, XSIZE=xsize, YSIZE=ysize, /Normal |
---|
364 | |
---|
365 | ENDIF ELSE BEGIN |
---|
366 | |
---|
367 | bar = CONGRID(bar, CEIL(xsize*!D.X_VSize), CEIL(ysize*!D.Y_VSize)) |
---|
368 | |
---|
369 | ; Decomposed color off if device supports it. |
---|
370 | CASE StrUpCase(!D.NAME) OF |
---|
371 | 'X': BEGIN |
---|
372 | IF thisRelease GE 5.2 THEN Device, Get_Decomposed=thisDecomposed |
---|
373 | Device, Decomposed=0 |
---|
374 | ENDCASE |
---|
375 | 'WIN': BEGIN |
---|
376 | IF thisRelease GE 5.2 THEN Device, Get_Decomposed=thisDecomposed |
---|
377 | Device, Decomposed=0 |
---|
378 | ENDCASE |
---|
379 | 'MAC': BEGIN |
---|
380 | IF thisRelease GE 5.2 THEN Device, Get_Decomposed=thisDecomposed |
---|
381 | Device, Decomposed=0 |
---|
382 | ENDCASE |
---|
383 | ELSE: |
---|
384 | ENDCASE |
---|
385 | |
---|
386 | TV, bar, xstart, ystart, /Normal |
---|
387 | |
---|
388 | ; Restore Decomposed state if necessary. |
---|
389 | CASE StrUpCase(!D.NAME) OF |
---|
390 | 'X': BEGIN |
---|
391 | IF thisRelease GE 5.2 THEN Device, Decomposed=thisDecomposed |
---|
392 | ENDCASE |
---|
393 | 'WIN': BEGIN |
---|
394 | IF thisRelease GE 5.2 THEN Device, Decomposed=thisDecomposed |
---|
395 | ENDCASE |
---|
396 | 'MAC': BEGIN |
---|
397 | IF thisRelease GE 5.2 THEN Device, Decomposed=thisDecomposed |
---|
398 | ENDCASE |
---|
399 | ELSE: |
---|
400 | ENDCASE |
---|
401 | |
---|
402 | ENDELSE |
---|
403 | |
---|
404 | ; Annotate the color bar. |
---|
405 | IF N_Elements(annotateColor) NE 0 THEN $ |
---|
406 | color = FSC_Color(annotateColor, color, NODISPLAY=Keyword_Set(nodisplay)) |
---|
407 | |
---|
408 | ;SPIGA |
---|
409 | ;SPIGA |
---|
410 | loadct, 0, /silent |
---|
411 | color=0 |
---|
412 | |
---|
413 | |
---|
414 | IF KEYWORD_SET(vertical) THEN BEGIN |
---|
415 | |
---|
416 | IF KEYWORD_SET(right) THEN BEGIN |
---|
417 | |
---|
418 | PLOT, [minrange,maxrange], [minrange,maxrange], /NODATA, XTICKS=1, $ |
---|
419 | YTICKS=divisions, XSTYLE=1, YSTYLE=9, $ |
---|
420 | POSITION=position, COLOR=color, CHARSIZE=charsize, /NOERASE, $ |
---|
421 | XTICKFORMAT='(A1)', YTICKFORMAT='(A1)', YMINOR=minor, _EXTRA=extra, $ |
---|
422 | YTICKNAME=ticknames, FONT=font, YLOG=ylog |
---|
423 | |
---|
424 | AXIS, YAXIS=1, YRANGE=[minrange, maxrange], YTICKFORMAT=format, YTICKS=divisions, $ |
---|
425 | YTICKLEN=ticklen, YSTYLE=1, COLOR=color, CHARSIZE=charsize, $ |
---|
426 | FONT=font, YTITLE=title, _EXTRA=extra, YMINOR=minor, YTICKNAME=ticknames, YLOG=ylog |
---|
427 | |
---|
428 | ENDIF ELSE BEGIN |
---|
429 | |
---|
430 | PLOT, [minrange,maxrange], [minrange,maxrange], /NODATA, XTICKS=1, $ |
---|
431 | YTICKS=divisions, YSTYLE=1, XSTYLE=1, TITLE=title, $ |
---|
432 | POSITION=position, COLOR=color, CHARSIZE=charsize, /NOERASE, $ |
---|
433 | XTICKFORMAT='(A1)', YTICKFORMAT=format, YMinor=minor, _EXTRA=extra, $ |
---|
434 | YTICKNAME=ticknames, YLOG=ylog, YTICKLEN=ticklen |
---|
435 | |
---|
436 | ENDELSE |
---|
437 | |
---|
438 | ENDIF ELSE BEGIN |
---|
439 | |
---|
440 | IF KEYWORD_SET(top) THEN BEGIN |
---|
441 | |
---|
442 | PLOT, [minrange,maxrange], [minrange,maxrange], /NODATA, XTICKS=divisions, $ |
---|
443 | YTICKS=1, XSTYLE=9, YSTYLE=1, $ |
---|
444 | POSITION=position, COLOR=color, CHARSIZE=charsize, /NOERASE, $ |
---|
445 | YTICKFORMAT='(A1)', XTICKFORMAT='(A1)', XTICKLEN=ticklen, $ |
---|
446 | XRANGE=[minrange, maxrange], FONT=font, XMINOR=minor,_EXTRA=extra, $ |
---|
447 | XTICKNAME=ticknames, XLOG=xlog |
---|
448 | |
---|
449 | AXIS, XTICKS=divisions, XSTYLE=1, COLOR=color, CHARSIZE=charsize, $ |
---|
450 | XTICKFORMAT=format, XTICKLEN=ticklen, XRANGE=[minrange, maxrange], XAXIS=1, $ |
---|
451 | FONT=font, XTITLE=title, _EXTRA=extra, XCHARSIZE=charsize, XMINOR=minor, $ |
---|
452 | XTICKNAME=ticknames, XLOG=xlog |
---|
453 | |
---|
454 | ENDIF ELSE BEGIN |
---|
455 | |
---|
456 | PLOT, [minrange,maxrange], [minrange,maxrange], /NODATA, XTICKS=divisions, $ |
---|
457 | YTICKS=1, XSTYLE=1, YSTYLE=1, TITLE=title, $ |
---|
458 | POSITION=position, COLOR=color, CHARSIZE=charsize, /NOERASE, $ |
---|
459 | YTICKFORMAT='(A1)', XTICKFORMAT=format, XTICKLEN=ticklen, $ |
---|
460 | XRANGE=[minrange, maxrange], FONT=font, XMinor=minor, _EXTRA=extra, $ |
---|
461 | XTICKNAME=ticknames, XLOG=xlog |
---|
462 | |
---|
463 | ENDELSE |
---|
464 | |
---|
465 | ENDELSE |
---|
466 | |
---|
467 | ; Restore the previous plot and map system variables. |
---|
468 | !P = bang_p |
---|
469 | !X = bang_x |
---|
470 | !Y = bang_y |
---|
471 | !Z = bang_z |
---|
472 | !Map = bang_map |
---|
473 | |
---|
474 | END |
---|