catSpatInterp {swfscMisc} | R Documentation |
Categorical Spatial Interpolation
Description
Create a raster of probability of categorical values interpolated across a 2-dimensional space given a set of points where each is assigned to one of several classes.
Usage
catSpatInterp(
data,
x.col = "x",
y.col = "y",
group.col = "group",
num.grid = 100,
knn = 10,
hull.buffer = 0.1,
num.cores = 1,
num.batches = NULL
)
Arguments
data |
matrix or data.frame containing points and grouping designation. |
x.col , y.col , group.col |
numbers or characters identifying which columns
in |
num.grid |
number of grid cells for k-nearest neighbor interpolation. |
knn |
number of nearest neighbors to consider for interpolation. |
hull.buffer |
percent increase of convex hull to use as spatial area to interpolate over. |
num.cores |
number of cores to distribute interpolations over. |
num.batches |
number of batches to divide grid cell interpolations into. |
Value
A list containing a raster and points of buffered convex hull.
Author(s)
Eric Archer eric.archer@noaa.gov
References
Adapted from code originally presented in a blog post on Categorical Spatial Interpolation by Timo Grossenbacher https://timogrossenbacher.ch/2018/03/categorical-spatial-interpolation-with-r/
Examples
## Not run:
iris.mds <- stats::cmdscale(dist(iris[, 1:4]), k = 2)
mds.df <- setNames(
cbind(iris.mds, data.frame(iris$Species)),
c("dim1", "dim2", "Species")
)
result <- catSpatInterp(
mds.df, x.col = "dim1", y.col = "dim2", group.col = "Species",
num.grid = 300, knn = 20, hull.buffer = 0.05,
num.cores = 5, num.batches = NULL
)
library(ggplot2)
ggplot(mapping = aes(dim1, dim2)) +
geom_raster(
aes(fill = Species, alpha = prob),
data = result$raster
) +
geom_polygon(data = result$hull.poly, fill = NA, col = "black") +
geom_hline(yintercept = 0, col = "white") +
geom_vline(xintercept = 0, col = "white") +
geom_point(
aes(fill = Species),
data = mds.df,
col = "black",
shape = 21,
size = 4
) +
theme(
axis.ticks = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
legend.position = "top",
panel.grid = element_blank(),
panel.background = element_blank()
)
## End(Not run)