在3D中绘制两点之间的线

时间:2012-11-21 14:33:47

标签: r 3d plot line

我正在编写一种回归算法,试图“捕获”框内的点。该算法试图使盒子保持尽可能小,因此通常盒子的边缘/角落通过点,这决定了盒子的大小。

问题:我需要R中框的图形输出。在2D中,可以很容易地用segments()绘制框,在两点之间画一条线。所以,有4个片段,我可以画一个盒子:

plot(x,y,type="p")
segments(x1,y1,x2,y2)

然后,我尝试了scatterplot3dplot3d包进行3D绘图。在3D中,segments()命令不起作用,因为没有其他z分量。我很惊讶(对我来说)segments()

中没有足够的3D替代品

在三维绘图时,是否有一种简单的方法可以在两点之间绘制方框/线?

1 个答案:

答案 0 :(得分:13)

scatterplot3d函数返回的信息允许您将(x,y,z)点投影到相关平面,如下所示:

library(scatterplot3d)
x <- c(1,4,3,6,2,5)
y <- c(2,2,4,3,5,9)
z <- c(1,3,5,9,2,2)
s <- scatterplot3d(x,y,z)

## now draw a line between points 2 and 3
p2 <- s$xyz.convert(x[2],y[2],z[2])
p3 <- s$xyz.convert(x[3],y[3],z[3])
segments(p2$x,p2$y,p3$x,p3$y,lwd=2,col=2)

rgl包是另一种方式,也许更容易(请注意segments3d从矢量中成对成对

plot3d(x,y,z)
segments3d(x[2:3],y[2:3],z[2:3],col=2,lwd=2)