suggestion for sp.grid()
Thanks Edzer. It seems like there is increasing interest in the use of ggplot2 functions for plotting spatial data-- possibly due to the complexity of lattice graphics. However, I think that the latticeExtra package [1] may have some exciting new functionality that could make spplot() a much more attractive option for making maps. I spent a little time last night tinkering with spplot and legend placement [2]. When I have some more time, I'll see about working up some more examples using latticeExtra functions. Cheers, Dylan 1. http://latticeextra.r-forge.r-project.org/ 2. http://casoilresource.lawr.ucdavis.edu/drupal/node/962 On Wed, Dec 15, 2010 at 9:13 AM, Edzer Pebesma
<edzer.pebesma at uni-muenster.de> wrote:
Thanks for the clear example, Dylan. I made this change, and it will be in the next version of sp. On 12/15/2010 05:57 PM, Dylan Beaudette wrote:
Shouldn't be posting questions late into the night. I realized that my
example was not reproducible.
One more time:
# setup environment
library(gstat)
library(latticeExtra)
library(grid)
# load example data
data(meuse.grid)
coordinates(meuse.grid) <- ~ x + y
gridded(meuse.grid) <- TRUE
meuse.grid$soil <- factor(meuse.grid$soil, labels=c('A','B','C'))
# hacked version of sp.grid()
sp.grid <- function (obj, col = 1, alpha = 1, ...)
{
? ? if (is.character(obj))
? ? ? ? obj = get(obj)
? ? xy = coordinates(obj)
? ? if (length(col) != 1 && length(col) != nrow(xy)) {
? ? }
? ? gt = as(getGridTopology(obj), "data.frame")
? ? grid.rect(x = xy[, 1], y = xy[, 2], width = gt$cellsize[1],
? ? ? ? height = gt$cellsize[2], default.units = "native", gp =
gpar(fill = col, col = NA, alpha = alpha))
}
trellis.par.set(regions=custom.theme()$regions,
superpose.polygon=list(col='black', alpha=0.25))
# first grid covers entire extent
p3 <- spplot(meuse.grid, 'dist', colorkey=list(space='bottom',
width=1, height=0.5, tick.number=3))
# overlay partially transparent, kind of a hack...
p3 <- p3 + layer(sp.grid(meuse.grid[meuse.grid$soil == 'A', ],
col='black', alpha=0.25))
p3 <- update(p3, key=simpleKey('Shaded Region', points=FALSE,
lines=FALSE, rect=TRUE, columns=1, space='top'))
p3
On Tue, Dec 14, 2010 at 11:32 PM, Dylan Beaudette
<dylan.beaudette at gmail.com> wrote:
Hi,
I was tinkering around with some of the new functions from the
latticeExtra package, and thought of a (messy) hack for plotting
multiple grids. However, due to the way sp.grid() is currently coded,
there is no way to define both grid fill color _and_ outline color:
gp = gpar(fill = col, col = NULL, alpha = alpha)
if this line is changed to...
gp = gpar(fill = col, col = NA, alpha = alpha)
then outlines will default to no color... It might be nice to add a
new parameter to sp.grid() to allow the user to set the outline color
of the rectangles produced by grid.rect(). If the above line is
changed so that col=NA, then it is possible to overlay two grids (kind
of) like this:
library(gstat)
library(latticeExtra)
library(grid)
# load example data
data(meuse.grid)
coordinates(meuse.grid) <- ~ x + y
gridded(meuse.grid) <- TRUE
# hacked version of sp.grid()
sp.grid <- function (obj, col = 1, alpha = 1, ...)
{
? ?if (is.character(obj))
? ? ? ?obj = get(obj)
? ?xy = coordinates(obj)
? ?if (length(col) != 1 && length(col) != nrow(xy)) {
? ?}
? ?gt = as(getGridTopology(obj), "data.frame")
? ?grid.rect(x = xy[, 1], y = xy[, 2], width = gt$cellsize[1],
? ? ? ?height = gt$cellsize[2], default.units = "native", gp =
gpar(fill = col, col = NA, alpha = alpha))
}
# nice colors
trellis.par.set(regions=custom.theme()$regions,
superpose.polygon=list(col='black', alpha=0.25))
# first grid covers entire extent
p3 <- spplot(meuse.grid, 'dist', colorkey=list(space='bottom',
width=1, height=0.5, tick.number=3)
# overlay partially transparent, kind of a hack...
p3 <- p3 + layer(sp.grid(meuse.grid[meuse.grid$soil == 'A', ],
col='black', alpha=0.25))
# add a new key
p3 <- update(p3, key=simpleKey('Bad Stuff', points=FALSE, lines=FALSE,
rect=TRUE, columns=1, space='top'))
print(p3)
Note that I am using an older version of gstat, version 0.9-63. Maybe
this code has been updated since then. If not, what do you think? Are
there any better ways to overlay a couple grids?
Cheers,
Dylan
_______________________________________________ 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
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo