Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R面片中的三维绘图_R_Matlab_3d_Lattice_Wireframe - Fatal编程技术网

R面片中的三维绘图

R面片中的三维绘图,r,matlab,3d,lattice,wireframe,R,Matlab,3d,Lattice,Wireframe,我在数据框中有以下数据: **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 ... 我想将它们绘制在这种类型的图表上: 我试了试R,但我只能得到一个。 我也读到了这本书,但我无法理解它 我该怎么做才能在R中得到一个类似Matlab的线框? 涉及哪些数据转换 这是文档中的示例代码: x <- seq(-pi, pi, len = 20) y <- seq(-pi

我在数据框中有以下数据:

**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
...
我想将它们绘制在这种类型的图表上:

我试了试R,但我只能得到一个。 我也读到了这本书,但我无法理解它

我该怎么做才能在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)

x使用
outer
创建z值,然后使用
persp
绘制:

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

要添加颜色,与
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])

jet.colors确实需要一些练习才能将(x,y,z)数据转换为线框或其他三维网格打印工具的z值矩阵。学习皈依是值得的,因为一旦你知道如何皈依,你永远不会忘记:-)。您可能会喜欢scatterplot3d软件包,该软件包允许线网格打印。这是未经测试的,因此它将作为注释而不是答案。我建议使用(mydata,persp(x=sort(unique(x)),y=sort(unique(y)),z=matrix(z,ncol=length(unique(x‘‘)’)
——我不太确定矩阵的组织顺序是否正确(可能是
byrow=TRUE
等)。请参见
示例(线框)
示例(persp)
并检查它是否符合您的需要。我从来没有足够的时间来思考这个问题,但请看这里的代码:您能提供结果的图片吗?问题是,这个答案假设z=f(x,y)。OP说他有一组有序的三元组(x,y,z),在这种情况下他需要生成一个拟合函数。当然,这不会绘制精确的原始数据。@Mulone我已经包括了在
persp3d
绘图中添加基于高度的着色的示例。
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])