Plots points on a three dimensional grid representing values in a
three dimensional array. Assumes high values are inside and uses alpha
blending to make outside points more transparent.
Usage
image3d(v, x = 1:dim(v)[1], y = 1:dim(v)[2], z = 1:dim(v)[3],
vlim = quantile(v, c(.9, 1),na.rm=TRUE),
col = heat.colors(256), alpha.power = 2,
alpha = ((1:length(col))/ length(col))^alpha.power,
breaks, sprites = TRUE, jitter = FALSE,
radius = min(diff(x), diff(y), diff(z)),
add = FALSE,...)
Arguments
v
three dimensional data array.
x,y,z
locations of grid planes at which values in v are
measured.
vlim
minimum and maximum v values for which points are
to be drawn.
col
vector of colors for the points as generated by
heat.colors or similar functions.
alpha.power
used to calculate the alpha values. The larger the
power, the smaller the alpha, the more transparent the point. Only
used if alpha is not supplied.
alpha
vector of alpha values between 0 and 1. The length of
the vector should be equal to the length of col.
breaks
breakpoints for the colors; must give one more
breakpoint than colors.
sprites
logical; if TRUE, use sprites3d to
draw the points.
radius
radius used in sprites3d.
jitter
logical; if TRUE, add a small amount of noise to
the point locations.
add
logical; if TRUE, add to current rgl graph.
...
material and texture properties. See rgl.material
for details.
References
Daniel Adler, Oleg Nenadic and Walter Zucchini (2003)
RGL: A R-library for 3D visualization with OpenGL
See Also
image, sprites3d,
points3d, jitter.
Examples
# view density of mixture of tri-variate normals
nmix3 <- function(x, y, z, m, s) {
0.4 * dnorm(x, m, s) * dnorm(y, m, s) * dnorm(z, m, s) +
0.3 * dnorm(x, -m, s) * dnorm(y, -m, s) * dnorm(z, -m, s) +
0.3 * dnorm(x, m, s) * dnorm(y, -1.5 * m, s) * dnorm(z, m, s)
}
f <- function(x,y,z) nmix3(x,y,z,.5,.5)
x<-seq(-2,2,len=50)
g <- expand.grid(x = x, y = x, z = x)
v <- array(f(g$x, g$y, g$z), c(length(x), length(x), length(x)))
image3d(v)
image3d(v, jitter = TRUE)