I like very much the solution proposed by Paul Murrell to mask the ocean (in fact, all that is not the country displayed) in a plot. It works pretty well for Australia. However, when I try to apply the same code for France, it fails. I search for the reason but I can't find. Here is the code for Australia, after the same code for France with the display problem. Thanks a lot for any advice on the reason for the discrepancy.
Marc Girondot ### For Australia library(mapdata) outline <- map("worldHires", regions="Australia", exact=TRUE, plot=FALSE) # returns a list of x/y coords xrange <- range(outline$x, na.rm=TRUE) # get bounding box yrange <- range(outline$y, na.rm=TRUE) xbox <- round(xrange + c(-2, 2)) ybox <- round(yrange + c(-2, 2)) image(x=seq(from=xbox[1], to=xbox[2], length=10), y =seq(from=ybox[1], to=ybox[2], length=10), z = outer(1:10, 1:10, "+"), xlab = "lon", ylab = "lat", xlim=xbox, ylim=ybox) # create the grid path in the current device subset <- !is.na(outline$x) polypath(c(outline$x[subset], NA, c(rev(xbox), xbox)), c(outline$y[subset], NA, rep(ybox, each=2)), col="light blue", rule="evenodd") ## Now here is the same code for France... not so beautiful. ### For France library(mapdata) outline <- map("worldHires", regions="France", exact=TRUE, plot=FALSE) # returns a list of x/y coords xrange <- range(outline$x, na.rm=TRUE) # get bounding box yrange <- range(outline$y, na.rm=TRUE) xbox <- round(xrange + c(-2, 2)) ybox <- round(yrange + c(-2, 2)) image(x=seq(from=xbox[1], to=xbox[2], length=10), y =seq(from=ybox[1], to=ybox[2], length=10), z = outer(1:10, 1:10, "+"), xlab = "lon", ylab = "lat", xlim=xbox, ylim=ybox) # create the grid path in the current device subset <- !is.na(outline$x) polypath(c(outline$x[subset], NA, c(rev(xbox), xbox)), c(outline$y[subset], NA, rep(ybox, each=2)), col="light blue", rule="evenodd") Le 16/07/13 23:42, Paul Murrell a écrit : > Hi > > There are a couple of problems: > > 1. > Your 'outline' is much bigger than it needs to be. For example, the > following produces just Australia ... > > outline <- map("worldHires", regions="Australia", exact=TRUE, > plot=FALSE) # returns a list of x/y coords > > 2. > The outline you get still has NA values in it (the coastline of > Australia in this database is a series of distinct lines; I don't > know why that is). Fortunately, you can stitch Australia back > together again like this ... > > subset <- !is.na(outline$x) > polypath(c(outline$x[subset], NA, c(xbox, rev(xbox))), > c(outline$y[subset], NA, rep(ybox, each=2)), > col="light blue", rule="evenodd") > > With those two changes, I get a much better result. You may want to > fiddle a bit more to add Tasmania and bits of PNG and Indonesia back > in the picture OR you could replace these problems with a different > approach and use a more sophisticated map outline via a "shapefile" > (see the 'sp' package and the 'maptools' package and possibly the > R-sig-geo mailing list). > > Hope that helps. > > Paul > > On 07/16/13 23:17, Louise Wilson wrote: >> library(mapdata) >> >> image(x=110:155, y =-40:-10, z = outer(1:45, 1:30, "+"), >> >> xlab = "lon", ylab = "lat") >> >> outline <- map("worldHires", plot=FALSE) # returns a list of x/y coords >> >> xrange <- range(outline$x, na.rm=TRUE) # get bounding box >> >> yrange <- range(outline$y, na.rm=TRUE) >> >> xbox <- xrange + c(-2, 2) >> >> ybox <- yrange + c(-2, 2) >> >> # create the grid path in the current device >> >> polypath(c(outline$x, NA, c(xbox, rev(xbox))), >> >> c(outline$y, NA, rep(ybox, each=2)), >> >> col="light blue", rule="evenodd") > -- __________________________________________________________ Marc Girondot, Pr Laboratoire Ecologie, Systématique et Evolution Equipe de Conservation des Populations et des Communautés CNRS, AgroParisTech et Université Paris-Sud 11 , UMR 8079 Bâtiment 362 91405 Orsay Cedex, France Tel: 33 1 (0)1.69.15.72.30 Fax: 33 1 (0)1.69.15.73.53 e-mail: marc.giron...@u-psud.fr Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html Skype: girondot [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.