Tamas Papp
2003-Jul-11 15:26 UTC
[R] 3d plot with different levels done in different colors
I would like a 3d plot of a matrix such that individual trapezoids
that make up the surface are colored according to the z-value of that
point (or preferably the midpoint of its four corners, or something
similar). MS Excel has something like that.
I know that persp can have an nx by ny matrix its "col" argument, I
just don't know how to generate that matrix. To calculate the midpoint
of the tiles for the matrix z, I could use something like
zz <- (z[-1,-1] + z[-1,-nrow(z)] + z[-ncol(z),-1] + z[-ncol(z),-nrow(z)])/4
but I don't know how to assign a color to that value. For example if I
have
boundaries <- c(0, .5, 1, 1.5)
and
colors <- c("red", "green", "blue")
I am looking for a function that assigns red to the elements of zz
between 0 and .5, etc. Alternative solutions are welcome, maybe
somebody has already wrote a library that does the whole thing neatly.
Thanks,
Tamas
--
Tam?s K. Papp
E-mail: tpapp at axelero.hu (preferred, especially for large messages)
tpapp at westel900.net
Please try to send only (latin-2) plain text, not HTML or other garbage.
Jerome Asselin
2003-Jul-11 20:49 UTC
[R] 3d plot with different levels done in different colors
Hi,
Consider this example which I have modified from the persp() help file.
It uses topo.colors() to create a series of colors.
Cheers,
Jerome
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")
zz <- (z[-1,-1] + z[-1,-ncol(z)] + z[-nrow(z),-1] +
z[-nrow(z),-ncol(z)])/4
cols <- topo.colors(length(zz))
cols[order(zz)] <- cols
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = cols)
On July 11, 2003 08:26 am, Tamas Papp wrote:> Content-Length: 1223
> Status: R
> X-Status: N
>
> I would like a 3d plot of a matrix such that individual trapezoids
> that make up the surface are colored according to the z-value of that
> point (or preferably the midpoint of its four corners, or something
> similar). MS Excel has something like that.
>
> I know that persp can have an nx by ny matrix its "col" argument,
I
> just don't know how to generate that matrix. To calculate the midpoint
> of the tiles for the matrix z, I could use something like
>
> zz <- (z[-1,-1] + z[-1,-nrow(z)] + z[-ncol(z),-1] +
> z[-ncol(z),-nrow(z)])/4
>
> but I don't know how to assign a color to that value. For example if I
> have
>
> boundaries <- c(0, .5, 1, 1.5)
>
> and
>
> colors <- c("red", "green", "blue")
>
> I am looking for a function that assigns red to the elements of zz
> between 0 and .5, etc. Alternative solutions are welcome, maybe
> somebody has already wrote a library that does the whole thing neatly.
>
> Thanks,
>
> Tamas