2011-09-27 10 views
4

I가 데이터 프레임에 다음 데이터 :3D 플롯 - 패치

예를 들어
**x** in (0,1) 
**y** in [0,1] 
**z** in [0,1] 

:

X,Y,Z 
0.1, 0.2, 0.56 
0.1, 0.3, 0.57 
... 

I 차트의 유형을 플롯 싶습니다 A 3d plot

나는 R을 시도했지만, 얻을 수있는 것은 모두 not-so-fancy 3d scatterplot입니다. 나는 lattice 3d wireframe에 대해서도 읽었지만, 나는 그 머리를 감당할 수 없었다.

R에서 와이어 프레임과 같은 Matlab을 얻으려면 어떻게해야합니까? 관련된 데이터 변환은 무엇입니까? 나는 그것이 특히 분명 찾을 수없는

x <- seq(-pi, pi, len = 20) 
y <- seq(-pi, pi, len = 20) 
g <- expand.grid(x = x, y = y) 
g$z <- sin(sqrt(g$x^2 + g$y^2)) 
wireframe(z ~ x * y, g, drape = TRUE, 
aspect = c(3,1), colorkey = TRUE) 

:

은 문서에서 샘플 코드입니다.

편집 : persp3d 함수가 정상적으로 작동하고 하나의 색상으로 3 차원 플롯을 생성 할 수있었습니다. z 값을 기준으로 색상 스케일을 어떻게 설정할 수 있습니까? 어떤 힌트를

감사합니다, Mulone

+0

(x, y, z) 데이터를 와이어 프레임 또는 다른 3-d 그리드 플로팅 도구의 z 값 행렬로 변환하는 것은 약간의 연습이 필요합니다. 일단 변환 방법을 알게되면 잊지 못할 것이므로 변환하는 방법을 배우려는 노력은 가치가 있습니다. 와이어 플릿 플롯을 허용하는 scatterplot3d 패키지가 마음에들 것입니다. –

+0

이것은 테스트되지 않았으므로 답이 아니라 주석으로 처리됩니다. (mydata, persp (x = sort (unique (X)), y = sort (unique (Y)), z = 행렬 (Z, ncol = 길이 (unique (x))))' - 매트릭스를 올바른 순서로 구성했는지 확신 할 수 없습니다 ('byrow = TRUE'등일 수도 있습니다.)) –

+2

'example (wireframe)'과'example (persp)'을보고 여러분의 필요에 맞는 것인지 확인하십시오. – Marek

답변

11

사용 outer는 z 값을 만든 다음 플롯 persp을 사용하기 :

z <- outer(x,y, function(x,y) sin(sqrt(x^2+y^2))) 
persp(x,y,z) 

persp

그림 및보기를 설정하기위한 옵션이 있습니다 각도는 ?persp을 참조하십시오. Matlab 스타일 채색의 네 번째 예제를 참조하십시오.

대화 형 플롯의 경우, rgl 패키지에 persp3d 사용을 고려 :

require(rgl) 
persp3d(x,y,z,col="blue") 

편집 색상과 관련된부터

persp의 방법에서 약간의 차이가 색상을 추가하려면 패싯의 중심보다는 정점에 위치하지만, 더 쉽게 만들 수 있습니다.

jet.colors <- colorRampPalette(c("blue", "green")) 
pal <- jet.colors(100) 
col.ind <- cut(z,100) # colour indices of each point 
persp3d(x,y,z,col=pal[col.ind]) 

persp3d

도움말 파일 매개 변수 smooth=FALSE를 추가하는 것이 좋습니다,하지만 그 아래로 개인적인 취향에의

.

+0

결과의 그림을 포함 할 수 있는가? –

+0

@ RomanLuštrik 추가했습니다. – James

+1

이 문제는 z = f (x, y)로 가정합니다. OP는 그가 주문한 트리플 (x, y, z) 세트를 가지고 있다고 말했고,이 경우에는 피팅 기능을 생성해야했습니다. 물론 원래의 정확한 데이터를 그리지는 않습니다. –