在3D R中创建平滑线

在3D R中创建平滑线,r,3d,smoothing,loess,R,3d,Smoothing,Loess,我有一组三维点,如下面的示例数据。我想从中创建一条平滑的线。有关于在3D空间中平滑2D曲面的信息,但如何在3D空间中平滑1D线 Z = seq(0, 1, 0.01) X = rnorm(length(Z), mean = 0, sd = 0.1) Y = 2 * Z ^ 2 + rnorm(length(Z), mean = 0, sd = 0.1) data = data.frame(X = X, Y = Y, Z= Z) 这是多元回归的一个例子。如果您碰巧知道与Z的关系应该是二次的,您

我有一组三维点,如下面的示例数据。我想从中创建一条平滑的线。有关于在3D空间中平滑2D曲面的信息,但如何在3D空间中平滑1D线

Z = seq(0, 1, 0.01)
X = rnorm(length(Z), mean = 0, sd = 0.1)
Y = 2 * Z ^ 2 + rnorm(length(Z), mean = 0, sd = 0.1)

data = data.frame(X = X, Y = Y, Z= Z)

这是多元回归的一个例子。如果您碰巧知道与
Z
的关系应该是二次的,您可以这样做

fit <- lm(cbind(X, Y) ~ poly(Z, 2))
拟合值将通过
predict(fit)
在两列矩阵中返回。 要绘制结果,可以使用
rgl

library(rgl)
plot3d(X, Y, Z, col = "red")
lines3d(cbind(predict(fit), Z))

不清楚您希望结果是什么样子。您想要一条通过这些点的平滑线,还是想要一条平滑掉随机噪声的线(例如,对于从0到1的
(0,2*Z^2,Z)
?你总是知道
X
Y
应该是
Z
的函数吗?对不起,这是一条平滑随机噪声的线
X
Y
始终是
Z
的函数(我正在查看树干的空间点,并试图获得树干的近似曲线)。这很有效,谢谢!
library(rgl)
plot3d(X, Y, Z, col = "red")
lines3d(cbind(predict(fit), Z))