[R-sig-Geo] spplot: overlay colored points on grid

Edzer Pebesma edzer.pebesma at uni-muenster.de
Tue May 31 08:09:27 CEST 2011


Tim, maybe this works:

pts$col = findInterval(pts$z, colbreaks)
spplot(df, col.regions=cols, at=colbreaks,
       sp.layout=list(list("sp.points", pts, pch=21, col=1,cex=1.8),
       list("sp.points", pts, col = cols[pts$col], pch=16,cex=1.6)),
       main="maybe right")

plotting pts twice is a bit of a hack; you need to get the cex arguments
right by tweaking them somewhat.

Hth,

On 05/30/2011 11:00 PM, Timothy W. Hilton wrote:
> R-sig-geo folks,
> 
> I'm trying to plot a SpatialPointsDataFrame over a SpatialGridDataFrame,
> with both the points and the grid colored by the same color scale.  I
> can get either one separately, but I haven't been able to combine them.
> Code to reproduce my problem below.  The real data are results from
> krige(), and I'd like to plot observations on top of the interpolated
> field.
> 
> Ideally, I'd like to give the points a black outline, with a filled
> background according to the value, like
> plot(rnorm(10), pch=21, col="black", bg=cols)  ## cols from code below
> 
> Many thanks!
> Tim
> 
> ## set up a color scheme
> cols <- c("#40004B", "#762A83", "#9970AB", "#C2A5CF", "#E7D4E8", "#D9F0D3", 
>           "#A6DBA0", "#5AAE61", "#1B7837", "#00441B")
> colbreaks <- seq(0, 1.0, by=0.1)
> 
> ## make a 10x10 SpatialGridDataFrame w/ random data
> grd <- SpatialGrid(grid = GridTopology(c(0,0), c(1,1), c(10,10)))
> df <- SpatialGridDataFrame(grid=grd, data=data.frame(z=rnorm(nrow(coordinates(grd)))))
> 
> ## make a SpatialPointsDataFrame with 15 points with random data
> pts <- data.frame(x=round(runif(15) * 10),
>                   y=round(runif(15) * 10),
>                   z=runif(15))
> coordinates(pts) <- ~x+y
> 
> ## this plots the grid the way I want it plotted
> spplot(df, col.regions=cols, at=colbreaks)
> 
> ## this plots the points the way I'd like to
> dev.new()
> spplot(pts, zcol="z", col.regions=cols, cuts=colbreaks, key.space="right", pch=16, fill=TRUE)
> 
> ## I can't figure out how to get the points colored by their value, like
> ## in the previous plot
> dev.new()
> spplot(df, col.regions=cols, at=colbreaks,
>        sp.layout=list("sp.points", pts, pch=21, cuts=colbreaks),
>        main="not quite right")
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

-- 
Edzer Pebesma
Institute for Geoinformatics (ifgi), University of Münster
Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
http://www.52north.org/geostatistics      e.pebesma at wwu.de



More information about the R-sig-Geo mailing list