2013-03-07 142 views
4

我有浮點數的3D矩陣,我想用R生成此矩陣的平滑3D表面。歡迎任何建議。由於如何使用R繪製3D矩陣的3D表面

我現在用的scatterplot3d ...但是如果你能夠創造與價值作爲Z-一個二維矩陣(X,Y)此功能沒有產生平滑的表面

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) 
+1

輸出您的數據的一部分,將大大增加你獲得幫助的機會。你可以簡單地將'dput(head(x))'的輸出粘貼到上面的問題中。感謝 – 2013-03-07 16:18:09

+0

> dput(頭(X)) 結構(列表(V1 = C(0.01,0.013971025,0.019832054,0.021035526, 0.023956488,0.027962379),V2 = C(0.01,0.011738323,0.011925891, 0.011990806,0.013416452,0.014304923) ,V3 = c(8.21e-19,3.47e-17, 1.77e-15,3.64e-15,1.39e-14,5.46e-14)),...,Name = c(「V1」,「V2」 , 「V3」),row.names = c(NA,6L),class =「data.frame」) – 2013-03-07 16:28:38

+0

將dput轉儲放在問題中!這裏的想法是改進的改進的問題和答案。 – mdsumner 2013-03-07 19:40:42

回答

1

我認爲mba.surfMBA包將是平滑一個不錯的選擇,如上面larrydag表明,persp將是很好的形象吧。下面的代碼是從help page for the mba.surf功能(交換LIDAR爲您3列數據幀):

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

+0

謝謝! - 提問者 – 2013-03-08 00:56:43

2
require(misc3d) 

a <- 2/5 

wsqr <- 1 - a^2 
w <- sqrt(wsqr) 
denom <- function(a,w,u,v) a*((w*cosh(a*u))^2 + (a*sin(w*v))^2) 

fx <- function(u,v) -u + (2*wsqr*cosh(a*u)*sinh(a*u)/denom(a,w,u,v)) 
fy <- function(u,v) 2*w*cosh(a*u)*(-(w*cos(v)*cos(w*v)) - (sin(v)*sin(w*v)))/denom(a,w,u,v) 
fz = function(u,v) 2*w*cosh(a*u)*(-(w*sin(v)*cos(w*v)) + (cos(v)*sin(w*v)))/denom(a,w,u,v) 


parametric3d(fx = fx, fy = fy, fz = fz, 
      umin = -17, 
      umax = 17, 
      vmin = -77, 
      vmax = 77, 
      n = 100, 
      color = c("grey17","grey21","red4","darkred","red4","grey21","grey17"), 
      engine = "rgl") 

enter image description here