On Nov 22, 2009, at 9:18 AM, David Winsemius wrote:
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 side
edges, 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.
Specifying row and column == 15 for z[-1,-1] does color just the top
facet. Conditional level coloring can be achieved as above with
suitable limits on the z values:
zcol <- as.vector( z[-1,-1] >1 & z[-1,-1] <3 )
--
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@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
______________________________________________
R-help@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
______________________________________________
R-help@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.