2012-11-21 50 views
9

我正在写一个回归算法,它试图“捕捉”框内的点。该算法试图保持箱子尽可能小,所以通常箱子的边缘/角落通过点,这决定了箱子的大小。在3D中绘制两点之间的线

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

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

然后我尝试了scatterplot3dplot3d包都为3D绘图。在3D中,segments()命令不起作用,因为没有附加的z分量。我很惊讶,显然(对我来说)在3D中没有足够的替换segments()

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

+0

你确定你所用的'plot3d'包?它不在CRAN上:你的意思是'rgl'包中的'plot3d'函数吗? –

回答

12

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)