Learn R Programming

misc3d (version 0.9-1)

image3d: Draw Points on a 3D Grid

Description

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

Run this code
# NOT RUN {
    # 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)
# }

Run the code above in your browser using DataLab