filled contour workaround [message #3711] |
Wed, 01 March 1995 14:49  |
caron
Messages: 16 Registered: May 1994
|
Junior Member |
|
|
After putting up with filled contours not working correctly,
I finally stumbled upon a work-around. I am plotting global data
with a world map in /cylindrical projection. So what I used to
do was:
1) call map_set to establish coord.system
2) call contour to draw filled contours, using /overplot
3) call map_continents to put world map on top
only trouble is, often but not always some of the contours would not fill in.
RSI fixed some of the problem in a release, but it has never worked right.
Here's the workaround:
1) call map_set to establish coord. system
2) call contour to draw filled contours, without /overplot: now the
contours are filled correctly, apparently because you let contour routine
establish its own coord. system
3) call map_set again, guessing at the values that make its coord
system the same as the one mysteriously selected by contour
4) call map_continents to put world map on top
Heres the workaround code. the last three lines to contour are new:
; establish projection
map_set, /cylindrical, /noerase, color = 1, limit = limits, /noborder
if cc_contour_filled then begin
contour, arr, cc_lon(cc_lon0:cc_lon1), cc_lat(cc_lat0:cc_lat1), $
levels = cc_contour_levels, $
c_colors = cc_contour_colors, color = 1, $
max_value = imd_missing_data, $
; /overplot, /fill, /follow, /closed, /noerase
xmargin = [0,0], ymargin = [0,0], $
xstyle =4, ystyle = 4, $
/fill, /follow, /closed, /noerase
; draw the continents on top of contours
; some funny bug: must "guess" at contour parameters
map_set, /cylindrical, title = plot_title(level_name(cc_pv_lev_idx)), /noerase, $
color = 1, limit = limits, $
xmargin = [4,4], ymargin = [3,3]
map_continents, color = cc_map_color_idx, mlinethick=1
Maybe someone can improve on this workaround. The problem is that the coord system
is only approximately the same (within a charactor!!). I tried manipulating !x.s and
!y.s but it didnt seem to work.
|
|
|
Re: filled contour workaround [message #3723 is a reply to message #3711] |
Wed, 01 March 1995 16:17  |
afl
Messages: 51 Registered: December 1994
|
Member |
|
|
In article <3j2tmn$h1m@ncar.ucar.edu>, caron@acd.ucar.edu (John Caron) writes:
|>
|> After putting up with filled contours not working correctly,
|> I finally stumbled upon a work-around. I am plotting global data
|> with a world map in /cylindrical projection. So what I used to
|> do was:
|> 1) call map_set to establish coord.system
|> 2) call contour to draw filled contours, using /overplot
|> 3) call map_continents to put world map on top
|> only trouble is, often but not always some of the contours would not fill in.
|> RSI fixed some of the problem in a release, but it has never worked right.
|>
|> Here's the workaround:
|> 1) call map_set to establish coord. system
|> 2) call contour to draw filled contours, without /overplot: now the
|> contours are filled correctly, apparently because you let contour routine
|> establish its own coord. system
|> 3) call map_set again, guessing at the values that make its coord
|> system the same as the one mysteriously selected by contour
|> 4) call map_continents to put world map on top
|>
|> Heres the workaround code. the last three lines to contour are new:
|>
|> ; establish projection
|> map_set, /cylindrical, /noerase, color = 1, limit = limits, /noborder
|>
|> if cc_contour_filled then begin
|> contour, arr, cc_lon(cc_lon0:cc_lon1), cc_lat(cc_lat0:cc_lat1), $
|> levels = cc_contour_levels, $
|> c_colors = cc_contour_colors, color = 1, $
|> max_value = imd_missing_data, $
|> ; /overplot, /fill, /follow, /closed, /noerase
|> xmargin = [0,0], ymargin = [0,0], $
|> xstyle =4, ystyle = 4, $
|> /fill, /follow, /closed, /noerase
|>
|> ; draw the continents on top of contours
|> ; some funny bug: must "guess" at contour parameters
|> map_set, /cylindrical, title = plot_title(level_name(cc_pv_lev_idx)),
|> /noerase, $
|> color = 1, limit = limits, $
|> xmargin = [4,4], ymargin = [3,3]
|> map_continents, color = cc_map_color_idx, mlinethick=1
|>
|>
|> Maybe someone can improve on this workaround. The problem is that the coord
|> system
|> is only approximately the same (within a charactor!!). I tried manipulating
|> !x.s and
|> !y.s but it didnt seem to work.
I would simply use the /cell_fill option with contour.
This seems to solve many of the problems previously encountered with /fill.
NOTE: Don't use /follow with /cell_fill!
Here is a simple example, but cell_fill should handle even tougher cases than this.
data = dist(91)
x = indgen(91)*4 - 180.
y = indgen(91)*2 - 90.
c_colors = indgen(12)+82 ; Choose your own colors!!
levels = indgen(12)*6
map_set, /cyl, /cont, /grid
contour, data, x, y, levels=levels, c_colors=c_colors, /cell_fill, /over
map_continents
map_grid
--
Andrew F. Loughe email: afl@cdc.noaa.gov
University of Colorado, CIRES voice: (303) 492-0707
Campus Box 449 fax: (303) 497-7013
Boulder, CO 80309-0449 USA
|
|
|