Skip to content

persp, add lines/highlights

3 messages · jjorgensen@fastmail.fm, Paul Murrell, robin hankin

#
Hello R-sters,

I'm trying to add several lines to a response surface that I've plotted
using persp().  I've tried lines() using the "trans3d" function but I've
been unsuccessful in getting it to work (R v2.0.1).  Essentially, I'm
trying to highlight one or more of the surface wireframe lines in a
bolder (or different) color.  Any tips from those of you who have some
experience with this would be greatly appreciated.  [Would it be easier
using wireframe() in library(lattice) instead?]

And, any suggestions on how to add text outside of the persp() plot next
to the highlighted line would be much appreciated.

Thanks,

Jeff Jorgensen
#
Hi
jjorgensen at fastmail.fm wrote:
Here's an example that just overlays two persp() plots ...

x <- seq(-10, 10, length= 30)
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
op <- par(bg = "white")
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue",
       zlim=range(z))

# overlay plot with just "highlighted" surface area
par(new=TRUE)
z2 <- matrix(NA, ncol=30, nrow=30)
xi <- 15:18
yi <- 13:14
z2[xi, yi] <- z[xi, yi]
persp(x, y, z2, theta = 30, phi = 30, expand = 0.5,
       zlim=range(z), border="red", col="pink", box=FALSE, axes=FALSE)
Do you mean like a legend?

Paul
#
Hello everyone

I always cut-n-paste Paul's suggestions and end up learning something!

In this case, though, I have a query.

I was wondering how the second persp() call dealt with hidden line
removal,  because pieces of mesh with NA values are see-through.

If you replace xi in the code below with 10:28
and yi with 19:20, then all the pink grid
appears in front of the blue grid; I would expect  the blue grid to 
hide some of the pink
grid.  Is there any way to enforce
hidden line removal here?


rksh
On May 31, 2005, at 01:14 am, Paul Murrell wrote:

            
--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743