繁体   English   中英

将平面添加到散点图3d

[英]Adding a plane to a scatterplot3d

我有一条直线方程

y = sqrt(c + x ^ 2)

我想向3d散点图添加一个平面,以使我的平面垂直于xy平面,并且上面给出的线是两个平面的相交线。

我该怎么做呢? 我不太了解plane3d的工作原理。 我已阅读http://svitsrv25.epfl.ch/R-doc/library/scatterplot3d/html/scatterplot3d.html

但是还是不明白。

这可能是您要寻找的:

library(scatterplot3d)
# y=sqrt(a+x^2) with x in (-0.5,0.5), z in (0,1) and a=0
a <- 0
x <- rep(seq(-0.5, 0.5, length = 200), each = 200)
y <- sqrt(a + x^2)
z <- rep(seq(0, 1, length = 200), 200)
scatterplot3d(x, y, z, highlight.3d = TRUE, pch = 20)

在此处输入图片说明

编辑:这将对您如何添加这些其他点很有帮助,但让我们以来自?scatterplot3d的第二个示例为例

  temp <- seq(-pi, 0, length = 50)
  x2 <- c(rep(1, 50) %*% t(cos(temp)))
  y2 <- c(cos(temp) %*% t(sin(temp)))
  z2 <- c(sin(temp) %*% t(sin(temp)))

现在将xx2组合在一起,并与其他对象进行相同的操作,我们得到:

scatterplot3d(c(x,x2), c(y,y2), c(z,z2), highlight.3d = TRUE, pch = 20)

在此处输入图片说明

除了上一个答案外,一旦构建了3-D散点图,就可以通过创建模型并使用嵌套在scatterplot3d()容器中的函数对其进行解析来向其添加平面。 它看起来应该像这样:

plot3d <- scatterplot3d(x, y, z, ... )
model  <- lm(y ~ sqrt(c + x^2) + z)
plot3d$plane3d(model)

在这样的容器中具有一个函数是一种非常奇怪的语法,但是它可以正常工作,给您类似的东西(虚线平面在立方体的中心附近可见):

平面穿过中心的3-D散点图

如果您想手动创建一个或多个飞机,我将使用在重新发布的Uwe方法:

spd <- scatterplot3d(1:10, 1:10, 1:10)

# xy
spd$plane3d(0.3549896,0,0,lty="dotted")

# yz
x0 <- 5
xyz1 <- spd$xyz.convert(rep(x0, 6), rep(0, 6), seq(0, 10, by=2))
xyz2 <- spd$xyz.convert(rep(x0, 6), rep(10, 6), seq(0, 10, by=2))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

xyz1 <- spd$xyz.convert(rep(x0, 6), seq(0, 10, by=2), rep(0, 6))
xyz2 <- spd$xyz.convert(rep(x0, 6), seq(0, 10, by=2), rep(10, 6))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

# zx
y0 <- 6
xyz1 <- spd$xyz.convert(rep(0, 6), rep(y0, 6), seq(0, 10, by=2))
xyz2 <- spd$xyz.convert(rep(10, 6), rep(y0, 6), seq(0, 10, by=2))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

xyz1 <- spd$xyz.convert(seq(0, 10, by=2), rep(y0, 6), rep(0, 6))
xyz2 <- spd$xyz.convert(seq(0, 10, by=2), rep(y0, 6), rep(10, 6))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

这通过手动规范生成飞机:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM