0

我正在尝试使用 3 维绘制曲面,plot3D但遇到了问题。我希望你们能帮助或至少为我指明正确的方向。如果这是解决方案,我愿意使用不同的包。

我正在阅读一个包含几十列的制表符分隔的文本文件,每一列都是它自己的变量,每一行都是一个单独的观察结果(我希望这是有道理的)。

假设r_NH4是我想映射到 x 轴,r_NO3是 y,removal_Nz

plot3D如果您的输入是矩阵,则要求 x 和 y 单调递增。我的数据的结构和大小使得对两者都增加排序变得困难(至少我无法弄清楚如何去做)。阅读手册页我了解到列表可用于一次输入x, y, z(不参考顺序)。

我为 plot3d 创建了一个列表来解释:

list.r_conc<-list(x=r_NH4,y=r_NO3,z=removal_N,3)

我尝试在plot3d.

library(plot3D)
plot3d(list.r_conc,
    xlab="x",
    ylab="y",
    zlab="z",
    xlim=c(0,40),
    ylim=c(0,40)
    )

结果创建了一个rgl对象,该对象将每个点绘制为散点图,而不是表面。

有没有办法通过在命令中添加一个参数来把它变成一个表面plot3D

我的数据是离散的和/或无序的事实是否会阻止绘制表面?

寻找解决方案让我想到了这个问题。尝试遵循解决方案,我尝试了以下脚本:

z=as.matrix(data.frame(r_NH4,r_NO3))
z=matrix(removal_N,ncol=length(r_NH4),nrow=(r_NO3))
persp3d(z=z)

输出是杂乱无章的平面和轴,r_NH4并且r_NO3与输入奇怪/不一致(但至少它没有创建散点图!)。

有没有办法同时按xy变量排序,同时保持z与正确的坐标相关联?

plot3D 甚至能够使用离散值(而不是模型或函数)绘制表面吗?


r_NH4    r_NO3    removal_N
2.220    16.816     1.609
1.734    13.280     4.262
0.000    21.586    -3.240
25.166    3.111     3.479
25.652    2.887     4.708
31.751    3.021    -4.899
17.042    4.868     3.118
23.259   15.917     2.968
23.560   15.773     3.250
24.973   14.533     0.848
25.452   13.973     2.880
21.599   11.528    -4.727
25.243   13.193     0.950
25.049   13.763    -1.134
25.434   14.550     2.152
26.499   15.446     0.606
25.661   15.207     2.449
19.422   10.645     2.350
4

0 回答 0