spersp (generic function) draws a perspective plot of a surface over
the x-y plane with the facets being filled with different colors
and (optionally) adds a legend strip with the color scale
(calls splot and persp).
Usage
spersp(x, ...)
# Default S3 method
spersp(
x = seq(0, 1, len = nrow(z)),
y = seq(0, 1, len = ncol(z)),
z,
s = z,
slim = range(s, finite = TRUE),
col = jet.colors(128),
breaks = NULL,
legend = TRUE,
horizontal = FALSE,
legend.shrink = 0.8,
legend.width = 1.2,
legend.mar = ifelse(horizontal, 3.1, 5.1),
legend.lab = NULL,
bigplot = NULL,
smallplot = NULL,
lab.breaks = NULL,
axis.args = NULL,
legend.args = NULL,
reset = TRUE,
xlab = NULL,
ylab = NULL,
zlab = NULL,
theta = 40,
phi = 20,
ticktype = "detailed",
cex.axis = 0.75,
...
)Arguments
- x
grid values for
xcoordinate. Ifxis a list, its componentsx$xandx$yare used forxandy, respectively. If the list has componentzthis is used forz.- ...
additional graphical parameters (to be passed to
persporspersp.default; e.g.xlim, ylim, zlim,...). NOTE: graphical arguments passed here will only have impact on the main plot. To change the graphical defaults for the legend use theparfunction beforehand (e.g.par(cex.lab = 2)to increase colorbar labels).- y
grid values for
ycoordinate.- z
matrix containing the values to be plotted (NAs are allowed). Note that
xcan be used instead ofzfor convenience.- s
matrix containing the values used for coloring the facets.
- slim
limits used to set up the color scale.
- col
color table used to set up the color scale (see
imagefor details).- breaks
(optional) numeric vector with the breakpoints for the color scale: must have one more breakpoint than
coland be in increasing order.- legend
logical; if
TRUE(default), the plotting region is splitted into two parts, drawing the perspective plot in one and the legend with the color scale in the other. IfFALSEonly the (coloured) perspective plot is drawn and the arguments related to the legend are ignored (splotis not called).- horizontal
logical; if
FALSE(default) legend will appear on the right side. IfTRUEthe legend will be along the bottom.- legend.shrink
amount to shrink the size of legend relative to the full height or width of the plot.
- legend.width
width in characters of the legend strip. Default is 1.2, a little bigger that the width of a character.
- legend.mar
width in characters of legend margin that has the axis. Default is 5.1 for a vertical legend and 3.1 for a horizontal legend.
- legend.lab
label for the axis of the color legend. Default is no label as this is usual evident from the plot title.
- bigplot
plot coordinates for main plot. If not passed these will be determined within the function.
- smallplot
plot coordinates for legend strip. If not passed these will be determined within the function.
- lab.breaks
if breaks are supplied these are text string labels to put at each break value. This is intended to label axis on a transformed scale such as logs.
- axis.args
additional arguments for the axis function used to create the legend axis (see
image.plotfor details).- legend.args
arguments for a complete specification of the legend label. This is in the form of list and is just passed to the
mtextfunction. Usually this will not be needed (seeimage.plotfor details).- reset
logical; if
FALSEthe plotting region (par("plt")) will not be reset to make it possible to add more features to the plot (e.g. using functions such as points or lines). IfTRUE(default) the plot parameters will be reset to the values before entering the function.- xlab
label for the x axis.
- ylab
label for the y axis.
- zlab
label for the z axis, defaults to a description of
z.- theta
x-y rotation angle for perspective (azimuthal direction).
- phi
z-angle for perspective (colatitude).
- ticktype
character;
"simple"draws just an arrow parallel to the axis to indicate direction of increase;"detailed"draws normal ticks as per 2D plots.- cex.axis
magnification to be used for axis annotation (relative to the current setting of
par("cex")).
Value
Invisibly returns a list with the following 4 components:
- pm
the viewing transformation matrix (see
perspfor details), a 4 x 4 matrix that can be used to superimpose additional graphical elements using the functiontrans3d.- bigplot
plot coordinates of the main plot. These values may be useful for drawing a plot without the legend that is the same size as the plots with legends.
- smallplot
plot coordinates of the secondary plot (legend strip).
- old.par
previous graphical parameters (
par(old.par)will reset plot parameters to the values before entering the function).
Side Effects
If reset = TRUE, the plotting region ([par]("plt"))
may be changed after exiting, to make it possible to add more features to the
plot (setting reset = FALSE prevents this).
Author
Based on image.plot function from package fields:
fields, Tools for spatial data.
Copyright 2004-2013, Institute for Mathematics Applied Geosciences.
University Corporation for Atmospheric Research.
Modified by Ruben Fernandez-Casal rubenfcasal@gmail.com.
Examples
# Regularly spaced 2D data
nx <- c(40, 40) # ndata = prod(nx)
x1 <- seq(-1, 1, length.out = nx[1])
x2 <- seq(-1, 1, length.out = nx[2])
trend <- outer(x1, x2, function(x,y) x^2 - y^2)
spersp( x1, x2, trend, main = 'Trend', zlab = 'y')
# Multiple plots
set.seed(1)
y <- trend + rnorm(prod(nx), 0, 0.1)
# 1x2 plot
old.par <- par(mfrow = c(1,2))
spersp( x1, x2, trend, main = 'Trend', zlab = 'y', reset = FALSE)
spersp( x1, x2, y, main = 'Data', zlab = 'y', reset = FALSE)
par(old.par)