Skip to contents

A generic function that draws a 3D surface (rgl::persp3d()) colored according to a continuous scale associated with a vector of values s, and (optionally) adds a color-bar legend (via splot3d()).

Usage

spersp3d(x, ...)

# Default S3 method
spersp3d(
  x,
  y = NULL,
  z = NULL,
  s = z,
  slim = range(s, finite = TRUE),
  col = jet.colors(128),
  xlab = NULL,
  ylab = NULL,
  zlab = NULL,
  xlim = NULL,
  ylim = NULL,
  zlim = NULL,
  aspect = !add,
  legend = TRUE,
  legend.zoom = 0.4,
  legend.width = 0.1,
  legend.dim = 0.2,
  legend.lab = NULL,
  box = TRUE,
  lab.breaks = NULL,
  lab.ticksize = 0.5,
  lab.dist = 3,
  add = FALSE,
  ...
)

Arguments

x

object used to select a method. In the default method, it typically provides the grid values for the x axis. The grid may be specified in several ways, see rgl::surface3d().

...

additional arguments passed to rgl::persp3d() for the main plot.

y

grid values for the y axis.

z

matrix with the surface height at each grid point (of dimension length(x) by length(y) if x and y are vectors).

s

matrix with the values used for coloring the surface (one color per vertex). Defaults to z.

slim

limits (vector of length 2 with the minimum and maximum) used to set up the color scale.

col

color table used to set up the color scale. Defaults to jet.colors(128).

xlab, ylab, zlab

titles for the axes (character strings; expressions are not accepted)

xlim, ylim, zlim

x-, y- and z-limits. If present, the plot is clipped to this region.

aspect

either a logical indicating whether to adjust the aspect ratio, or a new ratio.

legend

logical; if TRUE (default), the active rgl device is splitted into two subscenes, drawing the main plot in one and the categorical legend in the other (see fplot3d()). if FALSE only the (coloured) main plot is drawn and the arguments related to the legend are ignored (fplot3d() is not called).

legend.zoom

zoom factor applied to the legend subscene (see rgl::view3d()).

legend.width

relative width of the color bar, as a fraction of the corresponding dimension of the legend subscene/panel.

legend.dim

relative dimension of the legend panel, as a fraction of the full width (or height) of the device.

legend.lab

legend title.

box

logical; if TRUE (the default) a rectangle is drawn around the color bar.

lab.breaks

labels for the legend axis breaks; if NULL they are generated automatically (see axis3()).

lab.ticksize

length of the legend axis tick marks, as a fraction of the distance to the center of the legend panel.

lab.dist

distance between the tick marks and the labels of the legend axis, as a multiple of lab.ticksize.

add

logical; if TRUE the scatter plot is just added to the existing plot (including the legend if legend = TRUE).

Value

Called for its side effect (draws the 3D surface plot and, unless legend = FALSE, the legend on the active rgl device).

Examples

library(rgl)
open3d() # Alternatively, use `new3d()` to clear the current device or open a new one
x <- seq(0, 1, length.out = 30)
y <- seq(0, 1, length.out = 30)
z <- outer(x, y, function(x, y) sin(2*pi*x) + 4*(y-0.5)^2 - 0.5)
spersp3d(x, y, z)