rearrange data in SpatialPointsDataFrame or SpatialGridDataFrame for plotting with spplot (levelplot/xyplot wrapper)
rearrange data in SpatialPointsDataFrame or SpatialGridDataFrame for plotting with spplot (levelplot/xyplot wrapper)
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,...)
Arguments
data: object of class (or extending) SpatialPointsDataFrame or SpatialGridDataFrame
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
Returns
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.
See Also
spplot , levelplot , and stack
Examples
library(lattice)data(meuse.grid)# data framecoordinates(meuse.grid)= c("x","y")# promotes to SpatialPointsDataFramemeuse.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)=TRUElevelplot(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")