scatter3d
From car v2.0-0
by John Fox
Three-Dimensional Scatterplots and Point Identification
The scatter3d
function uses the rgl
package to draw 3D scatterplots
with various regression surfaces. The function identify3d
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
- Keywords
- hplot
Usage
scatter3d(x, ...)
## S3 method for class 'formula':
scatter3d(formula, data, subset, xlab, ylab, zlab, labels, ...)
## S3 method for class 'default':
scatter3d(x, y, z,
xlab=deparse(substitute(x)), ylab=deparse(substitute(y)),
zlab=deparse(substitute(z)), axis.scales=TRUE, revolutions=0,
bg.col=c("white", "black"),
axis.col=if (bg.col == "white") c("darkmagenta", "black", "darkcyan")
else c("darkmagenta", "white", "darkcyan"),
surface.col=c("blue", "green", "orange", "magenta", "cyan", "red",
"yellow", "gray"),
neg.res.col="red", pos.res.col="green",
square.col=if (bg.col == "white") "black" else "gray", 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, fill=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, ellipsoid=FALSE, level=0.5,
id.method=c("mahal", "xz", "y", "xyz", "identify", "none"),
id.n=if (id.method == "identify") Inf else 0,
labels=as.character(seq(along=x)), offset = ((100/length(x))^(1/3)) * 0.02,
model.summary=FALSE, ...)
identify3d(x, y, z, axis.scales=TRUE, groups = NULL, labels = 1:length(x),
col = c("blue", "green", "orange", "magenta", "cyan", "red", "yellow", "gray"),
offset = ((100/length(x))^(1/3)) * 0.02)
Arguments
- formula
- ``model'' formula, of the form
y ~ x + z
or (to plot by groups)y ~ x + z | g
, whereg
evaluates to a factor or other variable dividing the data into groups. - data
- data frame within which to evaluate the formula.
- subset
- expression defining a subset of observations.
- x
- variable for horizontal axis.
- y
- variable for vertical axis (response).
- z
- variable for out-of-screen axis.
- xlab, ylab, zlab
- axis labels.
- axis.scales
- if
TRUE
, label the values of the ends of the axes. Note: Foridentify3d
to work properly, the value of this argument must be the same as inscatter3d
. - revolutions
- number of full revolutions of the display.
- bg.col
- background colour; one of
"white"
,"black"
. - axis.col
- colours for axes; if
axis.scales
isFALSE
, then the second colour is used for all three axes. - surface.col
- vector of colours for regression planes,
used in the order specified by
fit
. - neg.res.col, pos.res.col
- colours for lines representing negative and positive residuals.
- square.col
- colour to use to plot squared residuals.
- point.col
- colour of points.
- text.col
- colour of axis labels.
- grid.col
- colour of grid lines on the regression surface(s).
- fogtype
- type of fog effect; one of
"exp2"
,"linear"
,"exp"
,"none".
- residuals
- plot residuals if
TRUE
; ifresiduals="squares"
, then the squared residuals are shown as squares (using code adapted from Richard Heiberger). Residuals are available only when there is one surface plotted. - surface
- plot surface(s) (
TRUE
orFALSE
). - fill
- fill the plotted surface(s) with colour (
TRUE
orFALSE
). - grid
- plot grid lines on the regression surface(s) (
TRUE
orFALSE
). - grid.lines
- number of lines (default, 26) forming the grid, in each of the x and z directions.
- df.smooth
- degrees of freedom for the two-dimensional smooth regression surface;
if
NULL
(the default), thegam
function will select the degrees of freedom for a smoothing spline by generalized - df.additive
- degrees of freedom for each explanatory variable in an additive regression;
if
NULL
(the default), thegam
function will select degrees of freedom for the smoothing splines by generalized cross-validation; if a positiv - sphere.size
- relative sizes of spheres representing points; the actual size is dependent on the number of observations.
- threshold
- if the actual size of the spheres is less than the threshold, points are plotted instead.
- speed
- relative speed of revolution of the plot.
- fov
- field of view (in degrees); controls degree of perspective.
- fit
- one or more of
"linear"
,"quadratic"
,"smooth"
,"additive"
; to display fitted surface(s); partial matching is supported -- e.g.,c("lin", "quad")
. - groups
- if
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 inplane.col
are used successively for the points, s - parallel
- when plotting surfaces by
groups
, should the surfaces be constrained to be parallel? A logical value, with defaultTRUE
. - ellipsoid
- plot concentration ellipsoid(s) (
TRUE
orFALSE
). - level
- expected proportion of bivariate-normal observations included in the concentration ellipsoid(s); default is 0.5.
- id.method
- if
"mahal"
(the default), relatively extreme points are identified automatically according to their Mahalanobis distances from the centroid (point of means); if"identify"
, points are identified interactively by right-cli - id.n
- Number of relatively extreme points to identify automatically (default,
0
unlessid.method="identify"
). - model.summary
- print summary or summaries of the model(s) fit
(
TRUE
orFALSE
).scatter3d
rescales the three variables internally to fit in the unit cube; this rescaling will affect regression coefficients. - labels
- text labels for the points, one for each point; in the
default
method defaults to the observation indices, in theformula
method to the row names of the data. - col
- 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
plane.col
argument toscatter3d
- offset
- vertical displacement for point labels (to avoid overplotting the points).
- ...
- arguments to be passed down.
Value
scatter3d
does not return a useful value; it is used for its side-effect of creating a 3D scatterplot.identify3d
returns the labels of the identified points.
Note
You have to install the rgl
package to produce 3D plots.
References
Fox, J. and Weisberg, S. (2011) An R Companion to Applied Regression, Second Edition, Sage.
See Also
Examples
if(interactive() && require(rgl) && require(mgcv)){
scatter3d(prestige ~ income + education, data=Duncan)
Sys.sleep(5) # wait 5 seconds
scatter3d(prestige ~ income + education | type, data=Duncan)
Sys.sleep(5)
scatter3d(prestige ~ income + education | type, surface=FALSE,
ellipsoid=TRUE, revolutions=3, data=Duncan)
scatter3d(prestige ~ income + education, fit=c("linear", "additive"),
data=Prestige)
}
# drag right mouse button to identify points, click right button in open area to exit
scatter3d(prestige ~ income + education, data=Duncan, id.method="identify")
scatter3d(prestige ~ income + education | type, data=Duncan, id.method="identify")
Community examples
Looks like there are no examples yet.