On 26/03/2012 1:34 PM, John Benning wrote:
Hi,

*Warning: R newb here. *

I've got a 3D scatterplot (
http://www.fleetwoodswoodworks.com/scatterPlot.jpg) which I want to drape
in color, with the draped plane corresponding to the mean z values on the
plot (similar to: http://www.fleetwoodswoodworks.com/draped3Dscatterplot.jpg).
Does anyone know what package will allow me to do this? I used *
scatterplot3d()* for my first plot. I've tried doing a *persp()* plot and
draping that using *drape.plot()* in the *fields *package, but that colors
the facets without differentiating between the four points (corners) that
make up the facet...if that makes sense (see
http://www.fleetwoodswoodworks.com/color3D.jpg). Draping *wireframe()* from
the *lattice *package does the same thing.

You should be able to get what you want with the rgl package. Some people have reported seg faults after the latest CRAN update; if you get those and can tell what the problem is, please tell me. If you can't tell what's happening, you could try the previous release.

I don't know the calculations that go into the "draped plane", but this will give a somewhat similar looking picture:

library(rgl)
x <- 1:5
y <- 1:4
z <- outer(x, y, function(x, y) x+y+rnorm(20))
low <- min(z)
high <- max(z)
col <- round(1+100*(z-low)/(high-low))

# Show the surface
persp3d(x,y,z, col=heat.colors(101)[col])

# now show some fake data
x1 <- outer(x, y, function(x, y) x)
y1 <- outer(x, y, function(x, y) y)
for (i in 1:5)
  points3d(x1,y1,z+rnorm(20, sd=0.2))

You can use alpha=0.5 (or some other value) in the persp3d call to get a partially transparent surface, or some other function to set the colors.

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.

Reply via email to