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

时间:2016-04-28 16:43:40

标签: r rgl

我想使用rgl库在plot3d图中绘制3D箭头,例如here所述。 但是很明显,arrows3d不是该软件包的一部分,它是否已被弃用,或者未来的音乐会被??arrows3D返回:

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

2 个答案:

答案 0 :(得分:3)

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

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

例如,在函数regvec3d中使用它们,它在平均偏差空间中绘制双变量多元回归模型的三维表示,y ~ x1 + x2

以下是使用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)

enter image description here

答案 1 :(得分:2)

最新的rgl(版本0.95.1470,目前仅适用于R-forge;有关如何获取,请参阅How do I install the latest version of rgl?)在arrow3d()之后建立了heplots::arrow3d模型{1}}功能,但扩展了很多。

它可以绘制像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")

产生这个输出:

arrow3d example

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