xyz.coords: Extracting Plotting Structures

xyz.coordsR Documentation

Extracting Plotting Structures


Utility for obtaining consistent x, y and z coordinates and labels for three dimensional (3D) plots.


xyz.coords(x, y = NULL, z = NULL,
           xlab = NULL, ylab = NULL, zlab = NULL,
           log = NULL, recycle = FALSE, setLab = TRUE)


x, y, z

the x, y and z coordinates of a set of points. Both y and z can be left at NULL. In this case, an attempt is made to interpret x in a way suitable for plotting.

If the argument is a formula zvar ~ xvar + yvar, xvar, yvar and zvar are used as x, y and z variables; if the argument is a list containing components x, y and z, these are assumed to define plotting coordinates; if the argument is a matrix or data.frame with three or more columns, the first is assumed to contain the x values, the 2nd the y ones, and the 3rd the z ones – independently of any column names that x may have.

Alternatively two arguments x and y can be provided (leaving z = NULL). One may be real, the other complex; in any other case, the arguments are coerced to vectors and the values plotted against their indices.

xlab, ylab, zlab

names for the x, y and z variables to be extracted.


character, "x", "y", "z" or combinations. Sets negative values to NA and gives a warning.


logical; if TRUE, recycle (rep) the shorter ones of x, y or z if their lengths differ.


logical indicating if the resulting xlab and ylab should be constructed from the “kind” of (x,y); otherwise, the arguments xlab and ylab are used.


A list with the components


numeric (i.e., double) vector of abscissa values.


numeric vector of the same length as x.


numeric vector of the same length as x.


character(1) or NULL, the axis label of x.


character(1) or NULL, the axis label of y.


character(1) or NULL, the axis label of z.


Uwe Ligges and Martin Maechler

See Also

xy.coords for 2D.


xyz.coords(data.frame(10*1:9, -4), y = NULL, z = NULL)

xyz.coords(1:5, stats::fft(1:5), z = NULL, xlab = "X", ylab = "Y")

y <- 2 * (x2 <- 10 + (x1 <- 1:10))
xyz.coords(y ~ x1 + x2, y = NULL, z = NULL)

xyz.coords(data.frame(x = -1:9, y = 2:12, z = 3:13), y = NULL, z = NULL,
           log = "xy")
##> Warning message: 2 x values <= 0 omitted ...