[R-sig-Geo] drawing order in spplot

Arien Lam a.lam at geo.uu.nl
Thu Jul 6 20:33:12 CEST 2006


Duncan,

After a few tries I found:

spplot(chisgrid, "dem", panel = function(x,y, ...){
    panel.gridplot(x,y, ...)
    sp.polygons(municipios, col=1,fill=0)
    })

, which is just the reverse nesting order from my previous shot at it.
HTH, Arien

To be precise, this worked on:
> sessionInfo()
Version 2.3.1 (2006-06-01)
i486-pc-linux-gnu

attached base packages:
[1] "methods"   "stats"     "graphics"  "grDevices" "utils"     "datasets"
[7] "base"

other attached packages:
 lattice       sp
"0.13-8" "0.8-16"


This approach is advocated for tweaking trellis plots.

On Thu, July 6, 2006 17:52, Duncan Golicher wrote:
> Thanks for this Arien,
>
> Just can't get it to work though. I messed around a bit more yesterday
> but couldn't find a way. No one else on the list replied. I have another
> reason to want to do something similar, so I was hoping there was a work
> around out there. Here is the data if you (or anyone else) can help.
>
> load(file=url("ftp://200.23.34.16/simulacion/SPATIAL/chisgrid.rob"))
> load(file=url("ftp://200.23.34.16/simulacion/SPATIAL//municipios.rob"))
>
> #municipios was originally imported from a shapefile. The "dem" is a
> coarse 1 km x 1km grid imported from GRASS 5.7. Both use UTM NAD27, but
> the projections are not #set. The data represents the state of Chiapas
> in Southern Mexico
>
> image(chisgrid,"dem",col=terrain.colors(100))
> plot(municipios,add=T)
>
> #Gives what we wanted in base graphics
>
> #But
>
> spplot(municipios, "AREA", panel <- function(x,y,...){
>     sp.grid(chisgrid)
>     panel.polygonsplot(x,y,...)
>     })
> #Doesn't
>
> #and
>
> municips <- list("sp.polygons", municipios)
> spplot(chisgrid["dem"],sp.layout=municips)
>
> #Draws them in the wrong order.
>
> #As an aside, this is great fun with rgl and the students loved it. Can
> anyone improve the code?
>
> view3d<-function(grid=chisgrid,dem=1,drape=2,exag=3,pal=sp.theme()$regions$col){
>   fullgrid(grid)<-TRUE
>   y<-grid[[dem]]*exag
>   y[is.na(y)]<-0
>   dim(y)<-grid at grid@cells.dim
>
>   x <- grid at grid@cellsize[1]*(1:grid at grid@cells.dim[1])
>   z <-grid at grid@cellsize[2]*(1:grid at grid@cells.dim[2])
>
>   y2<-grid[[drape]]
>   y2[!is.na(y2)]<-as.numeric(cut( y2[!is.na(y2)],length(pal)))
>   y2[is.na(y2)]<-0
>
>   ylim <- range(y2)
>   ylen <- ylim[2] - ylim[1] + 1
>
>   pal<-c("black",pal)
>   col <- pal[ y2-ylim[1]+1 ] # assign colors to heights for each point
>
>   rgl.clear()
>   rgl.surface(x, z, y, color=col)
> }
>
> view3d(drape=1,pal=terrain.colors(100))
>
> Duncan
>
>
>
> Arien Lam wrote:
>
>> I stumbled there too.
>> A way is to customize the default panel function within spplot.
>>
>> Try:
>>
>> spplot(municipios, "yourvariable", panel <- function(x,y,...){
>>     sp.grid(chisgrid)
>>     panel.polygonsplot(x,y,...)
>>     })
>>
>> Regards, Arien
>>
>> Duncan Golicher schreef:
>>
>>> Many thanks to everyone involved in putting together the excelent sp
>>> package. I have just used for teaching a brief intro to applied
>>> geostats with gstat. Students found life much easier than a year ago
>>> when I had to try to explain a less structured approach to the data.
>>> A simple question arose after the class. According to the spplot
>>> documentation "for grids and polygons sp.layout is drawn afterwards
>>> (so the item will not be overdrawn by the grid and/or polygon)".
>>> So in this example we expected a DEM to be drawn first, then
>>> municipal boundaries.
>>>
>>>  > class(municipios)
>>> [1] "SpatialPolygonsDataFrame"
>>>  > class(chisgrid)
>>> [1] "SpatialPixelsDataFrame"
>>>
>>> municips <- list("sp.polygons", municipios)
>>> spplot(chisgrid["dem"],sp.layout=municips)
>>>
>>> The municipal boundaries are drawn first then overdrawn by the DEM,
>>> which was not what we expected or wanted. I couldn't find how to
>>> avoid this, apart from the simple solution of ..
>>>
>>> image(chisgrid,col=terrain.colors(20))
>>> plot(municipios,add=T)
>>>
>>> instead of spplot.The figures on  http://r-spatial.sourceforge.net
>>> all appear to have the grid drawn first. Is there a way to reverse
>>> this?
>>>
>>> Duncan
>>>
>>
>
>
> --
> Dr Duncan Golicher
> Ecologia y Sistematica Terrestre
> Conservación de la Biodiversidad
> El Colegio de la Frontera Sur
> San Cristobal de Las Casas,
> Chiapas, Mexico
>
> Email: dgoliche at sclc.ecosur.mx
>
> Tel: 967 674 9000 ext 1310
> Fax: 967 678 2322
> Celular: 044 9671041021
>
> United Kingdom Skypein; 020 7870 6251
> Skype name: duncangolicher
> Download Skype from http://www.skype.com
>
>
>


-- 
drs. H.A. (Arien) Lam (Ph.D. student)
Department of Physical Geography
Faculty of Geosciences
Utrecht University, The Netherlands

E-mail:     a.lam at geo.uu.nl
Web:        http://www.geo.uu.nl/staff/a.lam

Telephone:  +31(0)30-253 2988 (direct), 2749 (secretary)
Fax:        +31(0)30-2531145

Visiting address: Room Zon 121, Heidelberglaan 2, Utrecht
Postal address: P.O.Box 80.115, 3508 TC Utrecht




More information about the R-sig-Geo mailing list