[R] "Over-coloring" facets on persp() plot
David Winsemius
dwinsemius at comcast.net
Sun Nov 22 15:18:47 CET 2009
On Nov 22, 2009, at 7:07 AM, Duncan Murdoch wrote:
> On 22/11/2009 1:07 AM, Marc Chiarini (Tufts) wrote:
>> Dear R Community:
>> Recently, I have managed to plot some really useful graphs of my
>> research data using persp(). I have even figured out how to
>> overplot rectangular regions (corresponding to submatrices) with a
>> different color. This is accomplished by using par(new=T). I am
>> now searching for a way to "highlight" a set of (possibly non-
>> contiguous) facets with a specific color, e.g., the facet between
>> each set of four points whose values are all above a certain
>> threshold. An example would be coloring the raised corners of the
>> classic sombrero (found in example(persp)) differently from the
>> rest of the sombrero. I feel like the last example in persp() is
>> pointing me in the right direction, but I'm not quite getting it.
>> Any help is much appreciated.
>
> Think of the facets as an nx-1 by ny-1 matrix. Pass the col arg by
> creating a matrix of this shape. (A vector version of the data in
> the matrix would also be good enough.)
I came close to coloring the "top" facet, but did not quite get there
with:
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")
zcol <- as.vector( z[-1,-1] == max(z) ) # Need to exclude two
sides, I think
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = ifelse(zcol ,
"red", "lightblue"),
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "X", ylab = "Y", zlab = "Sinc( r )"
)
par(op)
I did not get precisely the top facet in part, because there are 4 z
elements at the max.
--
David.
>
> If you pass something shorter, it will be recycled to that length.
>
> You could also use persp3d from the rgl package, but an important
> difference is that it colours all nx by ny vertices, and
> interpolates colours on the facets. So you can't use the same
> colour matrix as in persp.
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list