[R] What does persp() return?

Ben Bolker ben at zoo.ufl.edu
Thu Aug 1 22:38:31 CEST 2002

  I seem to recall this coming up before (I'm on a slow link so will not 
check the mailing list archives), but here is a bit of hackery for adding 
points and lines (etc.) to a persp() plot.  Of course, it doesn't do 
hidden line removal ...

## matrix multiply c(3dv,1) by transformation matrix:
## plot v[0]/v[3], v[1]/v[3]

x <- seq(-10, 10, length = 50)
y <- x
f <- function(x, y) {
    r <- sqrt(x^2 + y^2)
    10 * sin(r)/r
z <- outer(x, y, f)
z[is.na(z)] <- 1
par(bg = "white")
trans3d <- function(x,y,z,pmat) {
  tmat <- t((cbind(x,y,z,1)%*% pmat))

pmat <- persp(x, y, z, theta = 30, phi = 30, expand = 0.5, 
              col = "lightblue", xlab = "X", ylab = "Y", zlab = "Z",
m <- 1e-5
z2 <- sapply(1:length(x),function(n)f(x[n],y[n]))

On Thu, 1 Aug 2002, David Brahm wrote:

> I want to plot some 3D points on top of the grid produced by persp().
> On 2/22/01, Paul Murrell <paul at stat.auckland.ac.nz> wrote in R-help:
> > In S-Plus, persp() returns a value that can be used to transform 3D 
> > locations to 2D, but this sort of thing is not (yet) available in R.
> But persp() does return something (in R-1.5.1): a 4x4 matrix which in the C
> code is called the "viewing transformation matrix", VT.  Can VT be used to plot
> additional points?  If not, is such a thing in the works?
> Paul also suggested Uwe Ligges's "scatterplot3d" package, which is very nice
> but seems better at producing points than grids.
> Thanks!

318 Carr Hall                                bolker at zoo.ufl.edu
Zoology Department, University of Florida    http://www.zoo.ufl.edu/bolker
Box 118525                                   (ph)  352-392-5697
Gainesville, FL 32611-8525                   (fax) 352-392-3704

r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list