【问题标题】:Format of x in wireframe(x, data...) (lattice 3D plotting package in R)线框中 x 的格式(x,数据...)(R 中的格子 3D 绘图包)
【发布时间】:2014-03-19 03:40:44
【问题描述】:

问题:

我不明白 x 线框(x)的格式是什么。 (线框在 'lattice' 包中)

这是帮助中的解释:“wireframe 和 cloud 都有矩阵对象的方法,在这种情况下,x 提供了上面描述的 z 向量,而它的行和列分别解释为 x 和 y 向量。这类似到 persp 中使用的形式。”

但我不明白那是什么意思 - 有人可以告诉我 x 应该是的示例数据格式。

细节:

我正在尝试使用 lattice 包制作 3-D 曲面图。为什么是格子?

-我已经获得了一个 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) 时它不会给我带来完全麻烦的东西。

谢谢!!

【问题讨论】:

    标签: r 3d lattice wireframe


    【解决方案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
    

    【讨论】:

    • 我无法使用线框的公式版本,因为我没有公式。我使用 for 循环生成了 x,y,z 矩阵,该循环根据某些标准检查了一个非常大的数据文件。 x 和 y 是标准,z 是满足标准的次数。另外,我不熟悉 dat 命令,因此无法确定缺少的括号属于何处。我尝试了您的 as.data.frame 建议,但收到此错误: >wireframe(as.data.frame(OTUsSumMatrix)) UseMethod("wireframe") 中的错误:没有适用于“线框”的适用方法应用于“数据”类的对象.frame"
    • 你试过了吗? ...公式界面并不意味着回归模型。这只是一种设置网格和wireframe 绘图所需的响应变量的方法。我使用dat 作为数据框名称的占位符,因为您没有包含一个。在您的问题中发布更好的代码描述。使用编辑功能。
    【解决方案2】:

    我使用的矩阵是具有 x、y 和 z 值的 3 列。输入 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(矩阵名称) 线框(矩阵名称)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      相关资源
      最近更新 更多