2016-05-11 27 views
1

次のデータセットがあり、このデータセット(60 3Dポイント)に基づいてサーフェスをプロットする必要があります。ここで、X、Yは水平面座標、Zは垂直/高さ座標である。x、y、z座標を与えられたRの3Dサーフェスプロット

p = read.csv("points.csv") 
    PTS  X  Y  Z 
1 101 481897.9 5456408 94.18695 
2 102 481888.8 5456417 94.30702 
3 103 481877.0 5456410 94.29034 
4 104 481879.9 5456425 94.25546 
5 105 481872.7 5456424 94.09370 

いくつかのポストを見て、いくつかのライブラリで関数を使用しようとしても、私はまだ表面を適切にプロットする方法を見つけることができません。私は以下を試しました:

library(plotly) 
plot_ly(y= Y, x = X, z = Z, data=p, type = "surface") #returns empty graphic frame 

PX = data.matrix(p$X) 
PY = data.matrix(p$Y) 
PZ = data.matrix(p$Z) 

library(plot3D) 
surf3D(PX, PY, PZ) 
#returns: Error in if (is.na(var)) ispresent <- FALSE else if (length(var) == 1) if (is.logical(var)) if (!var) ispresent <- FALSE : 
    argument is of length zero 
library(lattice) 
wireframe(p$Z ~ p$X*p$Y, data = p) #returns just a cube 
library(rgl) 
surface3d(p$X,p$Y,p$Z) 
#returns: Error in rgl.surface(x = c(481897.916, 481888.8482, 481876.9524, 481879.9393, : y' length != 'x' rows * 'z' cols; 
#although there are 60 data points in the form (X,Y,Z) in the data set, with no points missing any coordinate 

ここでは何かひどく間違ったことをしているに違いありません。間違いが何であるか指摘してもらえますか?

+1

。また、dputコマンドでデータを投稿することができれば、他の人が手助けしやすくなります。 – Dave2e

答えて

0

それを行うには、あなたがこのような各(X、Y)カップルのためのZ値持っている必要がありますので、あなたは、このデータと3Dサーフェスプロットを作成することはできません:あなたが持っていない例えば

X1 X2 X3 ... Xn 
Y1 Z11 Z12 Z13 ... Z1n 
Y2 Z21 Z22 Z23 ... Z2n 
Y3 Z31 Z32 Z33 ... Z3n 
.     . 
.     . 
.     . 
Ym Zm1 Zm2 Zm3 ... Zmn 

をZ値(481897.9,5456417)のカップル。

だから、あなたが行うことができますすべてがscatter3dプロットである:RGLで3D散布図をプロットしてみてください:: PLOT3D(のp $のX、P $ Y、p個の$のZ)

plot_ly(data = p,x = X,y = Y, z = Z,type = "scatter3d",showlegend = FALSE) 

enter image description here

関連する問題