Search code examples
rgraphics3dgeometry-surface

How to plot a 3D surface of a 3D matrix with R


I have 3D matrix of floating point numbers and I would like to produce a smoothed 3D surface of this matrix using R. Any suggestions are welcome. Thanks

Now I am using scatterplot3d ... But this function did not produce a smoothed surface

x<-read.table("/Users/me/Desktop/data.txt")
scatterplot3d(x$V1, x$V2, x$V3, highlight.3d = TRUE, angle = 30, col.axis = "blue", col.grid = "lightblue", cex.axis = 1.3, cex.lab = 1.1, pch = 20)

Solution

  • I think that mba.surf from the MBA package would be a good choice for the smoothing, and as larrydag above suggests, persp would be good to image it. The code below is from the help page for the mba.surf function (swap LIDAR for your 3 column dataframe):

    data(LIDAR)
    mba.int <- mba.surf(LIDAR, 300, 300, extend=TRUE)$xyz.est
    # Two ways of imaging....
    image(mba.int, xaxs="r", yaxs="r")
    persp(mba.int, theta = 135, phi = 30, col = "green3", scale = FALSE,
      ltheta = -120, shade = 0.75, expand = 10, border = NA, box = FALSE)
    

    enter image description here