基于包 rgl 在 3D 中绘制箭头

Draw arrows in 3D, based on package rgl

我想使用 rgl 库在我的 plot3d 绘图中绘制 3D 箭头,例如 here。 但显然 arrows3d 不是包的一部分,它是否已弃用或未来的音乐为 ??arrows3D returns:

No vignettes or demos or help files found with alias or concept or title matching ‘arrows3D’ using fuzzy matching.

最新的 rgl(版本 0.95.1470,目前仅在 R-forge 上可用;请参阅 了解如何获取它)有一个函数 arrow3d() 仿照heplots::arrow3d 函数,但扩展了很多。

它可以像 heplots 函数一样绘制箭头(即由线段组成),或作为平面多边形,或作为多边形的拉伸,或作为多边形的旋转。 ?arrow3d 帮助示例目前是这样做的:

xyz <- matrix(rnorm(300), ncol = 3)
plot3d(xyz)
arrow3d(xyz[1,], xyz[2,], type = "extrusion", col = "red")
arrow3d(xyz[3,], xyz[4,], type = "flat",      col = "blue")
arrow3d(xyz[5,], xyz[6,], type = "rotation",  col = "green")
arrow3d(xyz[7,], xyz[8,], type = "lines",     col = "black")
arrow3d(spriteOrigin = xyz[9:12,],            col = "purple")

产生此输出:

通常它每次调用只绘制一个箭头,但如果您要求 3D 精灵(如 purple 示例中所示),它可以绘制同一箭头的多个副本。

matlibhttps://cran.r-project.org/package=matlib 包含另一个版本:arrows3d 它采用 (x,y,z) 坐标矩阵并为每个坐标绘制一个箭头。另一个函数 vectors3d 绘制一组向量(从原点)并为每个向量添加标签。

这些已调整为绘制几何 3D 图,并具有由 3D 锥体组成的更好的箭头。

它们被使用,例如在函数 regvec3d 中绘制双变量多元回归模型的 3D 表示,y ~ x1 + x2 在均值偏差中 space。

这是一个例子,使用vectors3d

library(rgl)
library(matlib)
vec <- rbind(diag(3), c(1,1,1))
rownames(vec) <- c("X", "Y", "Z", "J")
open3d()
vectors3d(vec, color=c(rep("black",3), "red"), lwd=2, radius=1/25)
# draw the XZ plane, whose equation is Y=0
planes3d(0, 0, 1, 0, col="gray", alpha=0.2)
vectors3d(c(1,1,0), col="green", lwd=2, radius=1/25)