微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 3D R 中创建平滑线

如何解决在 3D R 中创建平滑线

我有一组 3 维点,如下面的示例数据。我想从中创建一条流畅的线条。有关于在 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),sd = 0.1)

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

解决方法

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

fit <- lm(cbind(X,Y) ~ poly(Z,2))

但我假设您不知道这一点,并且想要某种更平滑的效果。我不认为 loesslowessgam 处理多元回归,但您可以在 lm 中使用自然样条:

library(splines)
fit <- lm(cbind(X,Y) ~ ns(Z,df = 4))

拟合值将通过 predict(fit) 在两列矩阵中返回。 要绘制结果,您可以使用 rgl:

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

screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。