stack {sp} | R Documentation |
rearrange SpatialPointsDataFrame for plotting with spplot or levelplot
spmap.to.lev(data, zcol = 1:n, n = 2, names.attr) ## S3 method for class 'SpatialPointsDataFrame': stack(x, select, ...) ## S3 method for class 'SpatialGridDataFrame': stack(x, select, ...)
data |
object of class (or extending) SpatialDataFrame |
zcol |
z-coordinate column name(s), or a column number (range) (after removing the spatial coordinate columns: 1 refers to the first non-coordinate column, etc. ) |
names.attr |
names of the set of z-columns (these names
will appear in the plot); if omitted, column names of zcol |
n |
number of columns to be stacked |
x |
same as data |
select |
same as zcol |
... |
ignored |
spmap.to.lev
returns a data frame with the following elements:
x |
x-coordinate for each row |
y |
y-coordinate for each row |
z |
column vector with each of the elements in columns zcol
of data stacked |
name |
factor; name of each of the stacked z columns |
stack
is an S3 method: it return a data.frame with a column
values
that has the stacked coordinates and attributes, and a
column ind
that indicates the variable stacked; it also
replicates the coordinates.
spplot, levelplot in package lattice
, and stack
library(lattice) data(meuse.grid) # data frame coordinates(meuse.grid) = c("x", "y") # promotes to SpatialDataFrame meuse.grid[["idist"]] = 1 - meuse.grid[["dist"]] # add variable # the following is made much easier by spplot: levelplot(z~x+y|name, spmap.to.lev(meuse.grid, z=c("dist","idist"), names.attr = c("distance", "inverse of distance")), aspect = "iso") levelplot(values~x+y|ind, as.data.frame(stack(meuse.grid)),aspect = "iso") gridded(meuse.grid) = TRUE levelplot(z~x+y|name, spmap.to.lev(meuse.grid, z=c("dist","idist"), names.attr = c("distance", "inverse of distance")), aspect = "iso") levelplot(values~x+y|ind, as.data.frame(stack(meuse.grid)), asp = "iso")