# scatter3d

From Rcmdr v1.2-4
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 ``nearby'' points to be identified. To exit from point-identification mode,
click the right (or centre) button an empty region of the plot.

- Keywords
- hplot

##### Usage

```
scatter3d(x, y, z,
xlab=deparse(substitute(x)), ylab=deparse(substitute(y)),
axis.scales=TRUE,
zlab=deparse(substitute(z)), 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,
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

- 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:*For`identify3d`

to work properly, the value of this argument must be the same as in`scatter3d`

. - revolutions
- number of full revolutions of the display.
- bg.col
- background colour; one of
`"white"`

,`"black"`

. - axis.col
- colours for axes; if
`axis.scales`

is`FALSE`

, 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`

; if`residuals="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`

or`FALSE`

). - fill
- fill the plotted surface(s) with colour (
`TRUE`

or`FALSE`

). - grid
- plot grid lines on the regression surface(s) (
`TRUE`

or`FALSE`

). - grid.lines
- number of lines (default, 26) forming the grid, in each of the x and y directions.
- df.smooth
- degrees of freedom for the two-dimensional smooth regression surface;
if
`NULL`

(the default), the`gam`

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), the`gam`

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 in`plane.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 default`TRUE`

. - ellipsoid
- plot concentration ellipsoid(s) (
`TRUE`

or`FALSE`

). - level
- expected proportion of bivariate-normal observations included in the concentration ellipsoid(s); default is 0.5.
- model.summary
- print summary or summaries of the model(s) fit
(
`TRUE`

or`FALSE`

).`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; defaults to the observation indices.
- 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 to`scatter3d`

- offset
- vertical displacement for point labels (to avoid overplotting by points).

##### Value

`scatter3d`

not return a useful value; it is used for its side-effect of creating a 3D scatterplot.`indentify3d`

returns the labels of the identified points.

##### Note

You have to install the `rgl`

and `mgcv`

packages to produce 3D plots.

##### See Also

##### Examples

```
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")))
```

*Documentation reproduced from package Rcmdr, version 1.2-4, License: GPL version 2 or newer*

### Community examples

Looks like there are no examples yet.