[R] filled maps

Ray Brownrigg ray at mcs.vuw.ac.nz
Tue Feb 3 21:49:01 CET 2004

> Date: Tue, 3 Feb 2004 11:34:06 +0100 (CET)
> From: Roger Bivand <Roger.Bivand at nhh.no>
> On Tue, 3 Feb 2004, Janus Larsen wrote:
> > Hi R-Help,
> > 
> > I would like to make filled contour maps of ocean data overlaid by
> > costlines from the map package.
> > I can draw the filled contours and the coastlines om the same plot, but
> > the filled contour also covers part of the land. To get rid of that I
> > tried to draw a filled coastline map on top of the filled contour, but
> > the filled map only draws the closed contours - so most of the land is
> > missing.
> > Example:
> > map("worldHires",xlim=c(0,15),ylim=c(50,60)) #Draw relevant region
> > (North Sea and Denmark waters)
> > map("worldHires",xlim=c(0,15),ylim=c(50,60),fill=TRUE) # This only draws
> > Denmark and Holland (Sweden, uk, Germany etc. disappears because they
> > are not closed polygons).
> Looks as though you can use the regions= argument:
> > res <- map("worldHires",xlim=c(0,15),ylim=c(50,60), plot=FALSE, 
> + namesonly=TRUE)
> > map("worldHires",xlim=c(0,15),ylim=c(50,60))
> > map("worldHires",regions=res, fill=TRUE, add=TRUE)
Thanks Roger, I hadn't got around to figuring out that workaround.
Certainly the mapgetg code explicitly excludes incomplete polygons if 
fill=TRUE, but since the polygon() function is happy to clip what it is
filling, your workaround takes advantage of that.

I'll have a look at getting mapgetg to do this itself - it would have
to always provide complete polygons if fill=TRUE instead of just
'visible' polylines.

> fixes it for me. Curiously, the longitudes add 2.5 degrees on each side.
Actually this is to preserve aspect ratio.  An earlier version of the
maps package adjusted the shape of the figure to conform to both aspect
ratio and imposed limits.  I didn't deliberately change this, but I
think I know why it has happened, so I'll look at this also.

Ray Brownrigg

More information about the R-help mailing list