R:从x,y,z绘制3D表面

想象我有一个3列矩阵
x,y,z
其中z是x和y的函数。

我知道如何绘制这些点的“散点图”
plot3d(x,y,z)

但是如果我想要一个表面,我必须使用其他命令,如surface3d
问题是它不接受与plot3d相同的输入
它似乎需要一个矩阵

(nº elements of z) = (n of elements of x) * (n of elements of x)

如何获得这个矩阵?
我已经尝试了命令interp,正如我做,当我需要使用轮廓图。

如何直接从x,y,z绘制曲面而不计算此矩阵?
如果我有太多的点,这个矩阵会太大。

干杯

如果你的x和y坐标不在网格上,那么你需要内插你的x,y,z表面到一个。您可以使用任何geostatistics包(geoR,gstat,其他)或更简单的技术,如反距离加权克里金。

我猜你提到的’interp’功能是从akima包。请注意,输出矩阵与输入点的大小无关。你可以有10000点在你的输入和插值到10×10网格如果你想要的。默认情况下,akima :: interp会将它放到一个40×40的网格上:

> require(akima) ; require(rgl)
> x=runif(1000)
> y=runif(1000)
> z=rnorm(1000)
> s=interp(x,y,z)
> dim(s$z)
[1] 40 40
> surface3d(s$x,s$y,s$z)

这将看起来尖锐和垃圾,因为它的随机数据。希望你的数据不是!

http://stackoverflow.com/questions/3979240/r-plotting-a-3d-surface-from-x-y-z

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:R:从x,y,z绘制3D表面