[R-sig-Geo] drawing order in spplot and Line width in sp maps

Duncan Golicher dgoliche at sclc.ecosur.mx
Thu Jul 6 23:03:47 CEST 2006


Great. Thanks so much. It was obvious really.
You also seem to have come up with one solution to the line width 
question asked a couple of days ago,  as this works.

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


Duncan

Arien Lam wrote:

>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
>>
>>
>>
>>    
>>
>
>
>  
>


-- 
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




More information about the R-sig-Geo mailing list