2013-03-07 8 views
4

나는 부동 소수점 수의 3D 매트릭스를 가지고 있으며 R을 사용하여이 매트릭스의 부드럽게 된 3D 표면을 생성하고 싶습니다. 모든 제안을 환영합니다. 감사합니다3D 매트릭스의 3D 표면을 플롯하는 방법 R

이제

나는 scatterplot3d를 사용하고 있습니다 ...하지만 당신이 값이 Z-되고있는 2D 매트릭스 (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)) '의 출력을 붙여 넣기 만하면됩니다. 감사 –

+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)), 이름 = c ("V1", "V2" , "V3"), row.names = c (NA, 6L), 클래스 = "data.frame" –

+0

질문에 dput 덤프 넣기! 여기서 아이디어는 개선 된 질의 응답입니다. – mdsumner

답변

1

은 내가 MBA 패키지에서 mba.surf이 평활를위한 좋은 선택이 될 것이라고 생각하고 larrydag 위에서 알 수 있듯이, persp 이미지 그것은 좋은 것입니다. 아래 코드는 (당신의 3 열 dataframe에 대한 스왑 LIDAR)를 help page for the mba.surf 함수에서입니다 :

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

고마워요! - 묻는 사람 –

2

를 생성하지 않았다 축 값을 사용하면 다음을 사용할 수 있습니다.

persp 

다음은 R Graph Gallery의 예입니다. persp example

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