我有在数据帧中的以下数据:3D图中的R - 补丁
**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,但我所能得到的只是一个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
函数工作正常,我能够生成一个颜色的3d图。如何设置相对于z值的色阶?
感谢您的任何提示, Mulone
确实需要一点练习才能将(x,y,z)数据转换为线框或其他3-d网格绘图工具的z值矩阵。学习转换是值得的,因为一旦你知道如何,你永远不会忘记:-)。你可能会喜欢scatterplot3d软件包,它允许wiregrid绘图。 –
这是未经测试的,所以它只是作为评论而不是答案。我会推荐'with(mydata,persp(x = sort(unique(X)),y = sort(unique(Y)),z = matrix(z,ncol = length(unique(x)))))' - - 我不太确定我是否按照正确的顺序组织了矩阵(可能是'byrow = TRUE'等。) –
请参阅'example(wireframe)'和'example(persp)'并检查它是否符合您的需求。 – Marek