0

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

我有四变量成分数据,其中每一行代表一个样本,每个样本由不同比例的四个成分(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)坐标。

4

1 回答 1

0

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

做到这一点的最好方法是查看 的来源plot3D.acomp,然后做它所做的事情。您可能还想向包的维护者建议他们应该无形地返回他们计算的 3D 坐标,以方便您想做的事情。

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

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"))

这产生了

在此处输入图像描述

于 2017-07-10T16:31:48.453 回答