From: Tom La Bone <booboo_at_gforcecable.com>

Date: Fri, 25 Jul 2008 08:01:29 -0700 (PDT)

require(rgl)

require(mgcv)

xlab; ylab; zlab

size <- max(c(x,y,z))/100 * sphere.factor if (size > threshold)

spheres3d(x, y, z, color = point.col, radius = size) else

points3d(x, y, z, color = point.col) aspect3d(c(1, 1, 1))

if (surface) {

xvals <- seq(min(x), max(x), length = grid.lines) yvals <- seq(min(y), max(y), length = grid.lines) dat <- expand.grid(x = xvals, y = yvals) for (i in 1:length(model)) {

axes3d(c('x', 'y', 'z'))

title3d(xlab = xlab, ylab = ylab, zlab = zlab) }

else

decorate3d(xlab = xlab, ylab = ylab, zlab = zlab, box = box) }

plotlm3d(x, y, z,

Date: Fri, 25 Jul 2008 08:01:29 -0700 (PDT)

After looking around a bit more I found the example I was looking for -- plotlm3d, which I found on the R wiki

http://wiki.r-project.org/rwiki/doku.php?id=graph_gallery:new-graphics

The original author was John Fox, and it was modified by Jose Claudio Faria and Duncan Murdoch. Below is a simplified version of the function and two examples. One example was presented as a test of the function and it works fine. The second example is the plot I want to make and I can't seem to get the scale on the x and y axes correct. Being unfamiliar with rgl, can someone provide a hint on how to get the scales right? Thanks for the help.

Tom

plotlm3d <- function (x, y, z,

surface = T, model = 'z ~ x + y', simple.axes = T, box = F, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), zlab = deparse(substitute(z)), surface.col = c('blue', 'orange', 'red', 'green', 'magenta', 'cyan', 'yellow', 'gray', 'brown'), point.col = 'yellow', grid.col = material3d("color"), grid = T, grid.lines = 26, sphere.factor = 1, threshold = 0.01){

require(rgl)

require(mgcv)

xlab; ylab; zlab

size <- max(c(x,y,z))/100 * sphere.factor if (size > threshold)

spheres3d(x, y, z, color = point.col, radius = size) else

points3d(x, y, z, color = point.col) aspect3d(c(1, 1, 1))

if (surface) {

xvals <- seq(min(x), max(x), length = grid.lines) yvals <- seq(min(y), max(y), length = grid.lines) dat <- expand.grid(x = xvals, y = yvals) for (i in 1:length(model)) {

mod <- lm(formula(model[i])) zhat <- matrix(predict(mod, newdata = dat), grid.lines, grid.lines) surface3d(xvals, yvals, zhat, color = surface.col[i], alpha = 0.5, lit = F) if (grid) surface3d(xvals, yvals, zhat, color = grid.col, alpha = 0.5, lit = F, front = 'lines', back = 'lines') }}if(simple.axes) {

axes3d(c('x', 'y', 'z'))

title3d(xlab = xlab, ylab = ylab, zlab = zlab) }

else

decorate3d(xlab = xlab, ylab = ylab, zlab = zlab, box = box) }

#This is an example of a 3D scatterplot that works fine

x <- c( 274, 180, 375, 205, 86, 265, 98, 330, 195, 53,

430, 372, 236, 157, 370)

y <- c(2450, 3254, 3802, 2838, 2347, 3782, 3008, 2450, 2137, 2560,

4020, 4427, 2660, 2088, 2605)

z <- c( 162, 120, 223, 131, 67, 169, 81, 192, 116, 55,

252, 232, 144, 103, 212)

open3d()

plotlm3d(x, y, z,

surface = T, model = 'z ~ x + y', xlab = 'x', ylab = 'y', zlab = 'z')

#This is the plot I am trying to make - scales on x and y axes are wrong

x <- c(0.3405,0.1220,0.1028,0.08451,0.05668,0.0345,0.003788,0.002121) y <- c(0.3460,0.1227,0.1097,0.09666,0.07677,0.06278,0.02168,0.01303) z <- c(2720,1150,1010,790,482,358,78,35)open3d()

plotlm3d(x, y, z,

surface = T, model = 'z ~ x + y - 1', xlab = 'x', ylab = 'y', zlab = 'z')

-- View this message in context: http://www.nabble.com/Tutorial-on-rgl-Graphics-tp18649114p18653442.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.Received on Fri 25 Jul 2008 - 15:05:24 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 25 Jul 2008 - 16:32:21 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*