在 R 的 3D 四面体中绘制 4D 成分

Plotting 4D compositional in a 3D tetrahedron in R

我想知道如何连接下图中的点。

我有四变量成分数据,其中每一行代表一个样本,每个样本由四种成分(4 列)的不同比例组成。

可重现的例子:

library(compositions); library(rgl)
TimeSeries <- cbind(runif(10),runif(10),runif(10),runif(10))
TimeSeries <- TimeSeries/rowSums(TimeSeries)
Acomp  <- acomp(TimeSeries)
plot3D(Acomp_TS,  cex=10, col="red",   log=FALSE, coors=T, bbox=F,    scale=F, center=F, axis.col=1, axes=TRUE)  

理想情况下,我想按照数据框中出现的顺序连接点。

我想这可以通过 lines3d 或 segments3d(库 rgl)之类的东西来完成,但我看不到如何从 Acomp 中提取 (x,y,z) 坐标。

您没有名为 Acomp_TS 的变量。我猜你的意思是 Acomp.

执行此操作的最佳方法是查看 plot3D.acomp 的源代码,然后按照它所做的去做。您可能还想建议包的维护者,他们应该不可见地 return 他们计算的 3D 坐标,以便于您想要做的事情。

但这里有一个可能有用的 hack:绘制点后,读取它们的位置并将其用作坐标。例如,

library(compositions); library(rgl)
TimeSeries <- cbind(runif(10),runif(10),runif(10),runif(10))
TimeSeries <- TimeSeries/rowSums(TimeSeries)
Acomp  <- acomp(TimeSeries)
plot3D(Acomp,  cex=10, col="red",   log=FALSE, coors=T, bbox=F,    scale=F, center=F, axis.col=1, axes=TRUE)
ids <- rgl.ids()
pts <- ids$id[ids$type == "points"]
lines3d(rgl.attrib(pts, "vertices"))

这产生了