2013-12-20 2 views
1

나는 x, y 및 z 데이터의 고유 한 조합을 가지고 있으며 3d 산란 플롯과 표면 플롯을 생성하려고합니다. 차원 산포도이 코드와 함께 일 :3 차원 표면 플롯을 만드는 방법

s3d <-scatterplot3d(x,z,y, pch=16, highlight.3d=TRUE, type="h", main="3D Scatterplot") 

하지만 기본 그래픽을 사용하여 표면 플롯을 생성하지 못한다. persp(x, z, y)에게 "x가 증가하고 y 값이 증가합니다."라는 오류 메시지가 나타납니다.

I 또한 RGL 패키지 께 RGL 패키지 시도 :

require(rgl) 
surface3d(x, y, z) 

rgl.surface에 오류 "결과 (X가 C를 (1, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 2, 2, 2, 2, 2 :! Y 길이 = X 행 * Z의 COLS "

나는 이전 게시물 here 살펴 보았다 또한 here하지만, 대부분은 일부 변경 또는 보간이 필요합니다 내용을 변경하지 않고 샘플 데이터로 3D 표면 플롯을 만들려면 어떻게해야합니까?

,451,515,

샘플 데이터는 다음과 같습니다

dput(df) 
structure(list(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), z = c(1, 2, 3, 
4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 
4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 
4, 5, 6, 7, 8, 9, 10), y = c(0.300000041723251, 0.400000065565109, 
0.499999970197678, 0.600000023841858, 0.700000047683716, 0.800000071525574, 
1.20000004768372, 1.59999990463257, 1.99999988079071, 2.39999985694885, 
1.40000009536743, 1.60000002384186, 1.79999983310699, 1.99999988079071, 
2.19999980926514, 2.39999985694885, 3, 3.59999990463257, 4.19999980926514, 
4.79999971389771, 2.49999976158142, 2.79999971389771, 3.09999990463257, 
3.39999961853027, 3.69999980926514, 4, 4.79999971389771, 5.59999990463257, 
6.39999961853027, 7.19999980926514, 3.59999990463257, 4, 4.39999961853027, 
4.79999971389771, 5.19999980926514, 5.59999990463257, 6.59999990463257, 
7.59999942779541, 8.60000038146973, 9.60000038146973, 4.69999980926514, 
5.19999980926514, 5.69999980926514, 6.19999980926514, 6.69999980926514, 
7.19999980926514, 8.40000057220459, 9.60000038146973, 10.8000011444092, 
12.0000009536743)), datalabel = "", time.stamp = "19 Dec 2013 17:54", .Names = c("x", 
"z", "y"), formats = c("%9.0g", "%9.0g", "%9.0g"), types = c(254L, 
254L, 254L), val.labels = c("", "", ""), var.labels = c("", "", 
""), version = 12L, row.names = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", 
"18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", 
"29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", 
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50" 
), class = "data.frame") 

답변

1

내가 & Z 열을 반전하여 Y 있으리라 믿고있어,하지만 당신은 이런 식으로 뭔가를 할 수 - 기본적으로 당신이 교차의 축과 Z-그리드 X & Y 필요 값 :

require(rgl) 
require(reshape2) 
df.x<-unique(df$x) 
df.y<-unique(df$z) 
df.z<-acast(df,x~z) 
persp(df.x,df.y,df.z) 
surface3d(df.x,df.y,df.z) 

enter image description here

관련 문제