On 6/16/2008 1:32 PM, Wesley Tansey wrote:
Hi all!

I'm very new to R, and I'm having trouble figuring out how to go from a file
of points that I have to a 3d surface plot of the data. I typically have
something like this:

X          Y          Z

0.005    0.023    34.45

0.0035  0.63      28.48

.

I've tried looking at the persp and wireframe packages, and the rgl package,
but I can't seem to figure out how to use any of them. I tried to take the
rgl.surface3d example and use it for myself, and this is what I have so far:

setwd(".")

data <- read.csv("data.csv",header=T)

x <- data$X

y <- data$Y

z <- data$Z

open3d()

surface3d(x, y, z)
That gives me the following error:

Error in rgl.surface(x = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, :
  y length != x rows * z cols

I have no idea what it is trying to tell me there. Would anyone mind helping
me out?

surface3d (and rgl.surface) expect you to have data that corresponds to a grid defining the surface. So you need at least one of the parameters (z in surface3d, y in rgl.surface) to be a matrix with rows corresponding to x values and columns corresponding to the other variable.

If your data is really a bunch of points, not on a grid, then you need to use plot3d() to plot it as points, or convert it to a surface. The interp() function in the akima package can do that. (There are lots of other possibilities too.)

Duncan Murdoch

______________________________________________
[email protected] 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