[R-sig-Geo] bubble vs plot.map -- gstat, maptools

Roger Bivand Roger.Bivand at nhh.no
Fri May 12 09:16:31 CEST 2006


On Thu, 11 May 2006, Zev Ross wrote:

> Hi Roger,
> 
> Wow, thanks again for the quick turnaround. Any suggestions in your code
> in how to get the legend scaled properly to match the "kludgy" scaling of
> the symbols?



> 
> The code below looks pretty good (http://www.zevross.com/temp/test.pdf),
> but the legend scaling is not really appropriate. Thoughts? 

This is because the symbols(..., inches=FALSE) is plotting in user display 
units, but legend() is plotting in font size units - you'd need to fake a 
legend with symbols(..., inches=FALSE) in user display space to get them 
to match.

When I chose the points() route, the cex in the bubbles and the legend are 
the same (as far as heads-up measuring is accurate). The legend bubbles in 
bubbles() also overlap, but this can be alleviated, as you saw, with 
y.intersp=. My reading of the JSS paper and accompanying function 
ProportionalSymbolMap() is that they use symbols, and work hard on the 
legend. The function needs generalising to take other input objects than 
point type old-style Map objects, but that isn't hard. It does have the 
nice quality of plotting big bubbles before small ones, with a border, so 
that overplotted bubbles are distinguished.

Roger

PS. my code was missing:

pts <- SpatialPointsDataFrame(coordinates(xx), as(xx, "data.frame"))

and my legend is:

legend("bottomleft", legend=out$legend$right$args$key$text[[1]], 
  pt.cex=out$legend$right$args$key$points$cex,
  pch=out$legend$right$args$key$points$pch, 
  col=out$legend$right$args$key$points$col,bty="n", y.intersp=1.2) 

> 
> Zev
> 
> 
> par(pty="s")
> map.nyc<-read.shape("D:/junk/all_counties.shp", dbf.data=T)
> out<-bubble(kcv.wint, "residual", do.sqrt=T, col=c(3,2), main="C.V.
> Residuals")
> plot(map.nyc, axes=T)
> 
> 
>  symbols(out$panel.args[[1]], circles=out$panel.args.common$cex*2000,
>   bg=out$panel.args.common$col, inches=F, add=TRUE)
> 
>  
>  legend(650000, 4470000, legend=out$legend$right$args$key$text[[1]],
>      pt.cex=out$legend$right$args$key$points$cex, pch=16,
>      col=out$legend$right$args$key$points$col,bty="n", y.intersp=1
>      )
>     
> 
> 
> Roger Bivand wrote:
> 
>  On Thu, 11 May 2006, Zev Ross wrote:
> 
>   
> 
>  Hi All,
> 
> I've got another question for the group. I'm using the bubble function in
> GSTAT to plot the residuals from a krige.cv object. I'd like to place on
> top the outlines of my counties of interest (or even better I'd like to
> plot them in the reverse order). What I'm finding is that even if I
> eliminate the key and eliminate the "asp" call from the bubble function,
> my two plots don't align as they do under more traditional plotting
> circumstances
> 
> Here's the idea:
> 
> kcv28<-krige.cv(avg.pm25~1,pm.all28, vFitRaw, nmax=dim(pm.all28)[1],
>      nfold=dim(pm.all28)[1])
> bubble(kcv28, "residual", do.sqrt=F)
> map.nyc<-read.shape("D:/junk/counties/all_counties.shp", dbf.data=T)
> plot(map.nyc, add=T, fg="transparent", ol="gray50")
>     
> 
>  Well, bubble() uses lattice graphics, and the plot() methods are most 
> often base graphics:
> 
> library(maptools)
> xx <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1])
> xx$crude <- (1000*xx$SID74)/xx$BIR74
> out <- bubble(pts, "crude")
> plot(xx, axes=TRUE)
> symbols(out$panel.args[[1]], circles=out$panel.args.common$cex/10, 
>   bg=out$panel.args.common$col, inches=FALSE, add=TRUE)
> 
> is pretty close (with a kludgy cex/10 size factor), or
> 
> plot(xx, axes=TRUE)
> points(out$panel.args[[1]], cex=out$panel.args.common$cex, 
>   col=out$panel.args.common$col, pch=out$panel.args.common$pch)
> 
> using points(). See
> 
> str(out)
> 
> to pick out the guts of the bubble lattice plot object. The plot() 
> method used here, symbols() and points() are all in base grahics.
> 
> Also see a recent paper in JSS by Susumu Tanimura, Chusi Kuroiwa, and 
> Tsutomu Mizota, including some legend code:
> 
> http://www.jstatsoft.org/
> 
> Volume 15, 2006, Issue 5 
> 
> Roger
> 
>   
> 
>  Any suggestions? Zev
> 
> --
> Zev Ross
> ZevRoss Spatial Analysis
> 303 Fairmount Ave
> Ithaca, NY 14850
> (607) 277-0004 (phone)
> (866) 877-3690 (fax toll-free)
> zev at zevross.com
> www.zevross.com
> 
> 
>     
> 
> 
> --
> Zev Ross
> ZevRoss Spatial Analysis
> 303 Fairmount Ave
> Ithaca, NY 14850
> (607) 277-0004 (phone)
> (866) 877-3690 (fax toll-free)
> zev at zevross.com
> www.zevross.com
> 
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-sig-Geo mailing list