Three-Dimensional Scatterplots and Point Identification
scatter3d function uses the
rgl package to draw 3D scatterplots
with various regression surfaces. The function
allows you to label points interactively with the mouse:
Press the right mouse button (on a two-button mouse) or the centre button (on a
three-button mouse), drag a
rectangle around the points to be identified, and release the button.
Repeat this procedure for each point or
set of ``nearby'' points to be identified. To exit from point-identification mode,
click the right (or centre) button an empty region of the plot.
scatter3d(x, y, z, xlab=deparse(substitute(x)), ylab=deparse(substitute(y)), zlab=deparse(substitute(z)), revolutions=0, bg.col=c("white", "black"), axis.col=if (bg.col == "white") "black" else "white", surface.col=c("blue", "green", "orange", "magenta", "cyan", "red", "yellow", "gray"), neg.res.col="red", pos.res.col="green", point.col="yellow", text.col=axis.col, grid.col=if (bg.col == "white") "black" else "gray", fogtype=c("exp2", "linear", "exp", "none"), residuals=(length(fit) == 1), surface=TRUE, grid=TRUE, grid.lines=26, df.smooth=NULL, df.additive=NULL, sphere.size=1, threshold=0.01, speed=1, fov=60, fit="linear", groups=NULL, parallel=TRUE, model.summary=FALSE) identify3d(x, y, z, groups=NULL, labels=1:length(x), col=c("blue", "green", "orange", "magenta", "cyan", "red", "yellow", "gray"), offset = ((100/length(x))^(1/3)) * 0.02)
- variable for horizontal axis.
- variable for vertical axis (response).
- variable for out-of-screen axis.
- xlab, ylab, zlab
- axis labels.
- number of full revolutions of the display.
- background colour; one of
- colour for axes; default is
"white"for black background,
"black"for white background.
- vector of colours for regression planes,
used in the order specified by
- neg.res.col, pos.res.col
- colours for lines representing negative and positive residuals.
- colour of points.
- colour of axis labels.
- colour of grid lines on the regression surface(s).
- type of fog effect; one of
- plot residuals (
FALSE); available only when there is one surface plotted.
- plot surface(s) (
- plot grid lines on the regression surface(s) (
- number of lines (default, 26) forming the grid, in each of the x and y directions.
- degrees of freedom for the two-dimensional smooth regression surface;
NULL(the default), the
gamfunction will select the degrees of freedom for a smoothing spline by generalized
- degrees of freedom for each explanatory variable in an additive regression;
NULL(the default), the
gamfunction will select degrees of freedom for the smoothing splines by generalized cross-validation; if a positiv
- relative sizes of spheres representing points; the actual size is dependent on the number of observations.
- if the actual size of the spheres is less than the threshold, points are plotted instead.
- relative speed of revolution of the plot.
- field of view (in degrees); controls degree of perspective.
- one or more of
"additive"; to display fitted surface(s); partial matching is supported -- e.g.,
NULL(the default), no groups are defined; if a factor, a different surface or set of surfaces is plotted for each level of the factor; in this event, the colours in
plane.colare used successively for the points, s
- when plotting surfaces by
groups, should the surfaces be constrained to be parallel? A logical value, with default
- print summary or summaries of the model(s) fit
- text labels for the points, one for each point; defaults to the observation indices.
- colours for the point labels, given by group. There must be at
least as many colours as groups; if there are no groups, the first colour is used. Normally, the colours
would correspond to the
- vertical displacement for point labels (to avoid overplotting by points).
scatter3dnot return a useful value; it is used for its side-effect of creating a 3D scatterplot.
indentify3dreturns the labels of the identified points.
You have to install the
mgcv packages to produce 3D plots.
State.x77 <- as.data.frame(state.x77) with(State.x77, scatter3d(Income, Murder, Illiteracy)) with(State.x77, identify3d(Income, Murder, Illiteracy, labels=row.names(State.x77))) with(State.x77, scatter3d(Income, Murder, Illiteracy, fit=c("linear", "quadratic")))