Plot a smooth approximation, using loess by default, of
one variable (z) against two others (x and y).
This panel function should be used with a levelplot.
Usage
panel.2dsmoother(x, y, z, subscripts = TRUE,
form = z ~ x * y, method = "loess", ...,
args = list(), n = 100)
Arguments
x, y, z
data points. If these are missing, they will be looked for in the
environment of form. So in many cases you can skip these if
passing form. In fact, for convenience, the formula
can be passed as the first argument (i.e. x).
form, method
the smoothing model is constructed (approximately) as
method(form, data = list(x=x, y=y, z=z), {args}).
See the Examples section for common choices.
subscripts
data indices for the current packet, as passed in by levelplot.
...
further arguments passed on to panel.levelplot.
args
a list of further arguments to the model function (method).
n
number of equi-spaced points along each of x and y on which to evaluate the smooth function.
Details
This should work with any model function that takes a formula
argument, and has a predict method argument.
set.seed(1)
xyz <- data.frame(x = rnorm(100), y = rnorm(100))
xyz$z <- with(xyz, x * y + rnorm(100, sd = 1))
levelplot(z ~ x * y, xyz, panel = panel.2dsmoother)
## showing data points on the same color scale
levelplot(z ~ x * y, xyz,
panel = panel.levelplot.points, cex = 1.2) +
layer_(panel.2dsmoother(..., n = 200))
## simple linear regression model
levelplot(z ~ x * y, xyz,
panel = panel.levelplot.points) +
layer_(panel.2dsmoother(..., method = "lm"))
## GAM smoother with smoothness by cross validation
if (require("mgcv"))
levelplot(z ~ x * y, xyz, panel = panel.2dsmoother,
form = z ~ s(x, y), method = "gam")