线框中x的格式(x,数据......)(R中的点阵3D绘图包)

时间:2014-02-19 02:28:51

标签: r 3d lattice wireframe

问题:

我不明白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)时,我如何转换矩阵以便它不会给我一些完全棘手的东西。

谢谢!

2 个答案:

答案 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)