问题:
我不明白x wireframe(x)的格式是什么。 (线框在'网格'包中)
这是帮助中的解释:“线框和云都有矩阵对象的方法,在这种情况下,x提供上述z向量,而其行和列分别被解释为x和y向量。这类似到persp中使用的形式。“
但我不明白那些意思是什么 - 有人可以告诉我x应该是的数据的示例格式。
详情:
我正在尝试使用晶格封装制作三维曲面图。为什么格?
- 我已经得到了一个3D散点图来处理'scatterplot3d'包,但据我所知,包不会生成曲面。
- 我无法在我的计算机上加载'rgl'包。每次它说我需要下载X11并中止我的R会话(什么是X11?这是一些mac的东西?)
我的数据是66行×3列矩阵,其中列分别是x,y和z。 x和y是形成网格的整数,它们从0:10和0:5开始并覆盖每个可能的组合(因此它们已经是均匀间隔的网格 - 我不需要转换)
例如,矩阵的顶部如下所示:
X Y Z
[1,] 0 0 17437
[2,] 0 1 3627
[3,] 0 2 2329
[4,] 0 3 1790
[5,] 0 4 1426
[6,] 0 5 1207
[7,] 1 0 2851
[8,] 1 1 1343
[9,] 1 2 967
[10,] 1 3 794 ......等每个X / Y组合
当我输入线框(MyMatrix)时,我如何转换矩阵以便它不会给我一些完全棘手的东西。
谢谢!
答案 0 :(得分:1)
如果您有一个可以自然地以长格式强制转换为data.frame的值网格,那么为什么不使用wireframe
的公式版本?
wireframe( Z ~ X + Y, data=dat)
您没有给出可重现的示例,但如果该方法被阻塞,那么您可以将as.data.frame
包裹在矩阵对象名称周围。这将创建一个可用于矩阵方法的矩阵:
M <- matrix(NA, 11,6)
M[dat[,1:2] <- M[,3]
rownames(M) <- 0:10
colnames(M) <- 0:5
答案 1 :(得分:1)
我使用的矩阵是3列,包含x,y和z值。输入persp()或wireframe()的正确格式是在矩阵体中只有z值的格式,x和y值只是行和列标签。例如:
如果我有:
x y z
[1,] 0 0 17437
[2,] 0 1 3627
[3,] 0 2 2329
[4,] 1 0 2851
[5,] 1 1 1343
[6,] 1 2 967
[7,] 2 0 1681
[8,] 2 1 906
[9,] 2 2 689
[10,] 3 0 1241
[11,] 3 1 733
[12,] 3 2 582
我需要将其更改为:
0 1 2
0 1343 967 794
1 906 689 591
2 733 582 505
3 630 509 438
其中行名对应于x值,列名对应于y值。 要在命令中输入此命令,只需键入: persp(matrixname中) 线框(到matrixname)