4

您知道 R 中是否存在用于绘制体素对象(3D 数组)的库或函数吗?我找到了可以执行 3d 散点图的包 rgl,但我真的在寻找与 3D 数组一起使用的函数“image”的等价物。谢谢

4

1 回答 1

5

这是使用 rgl 包的基本示例。您可以轻松地将其转换为对 3D 数组进行操作的函数,以更改颜色、alpha 或其他感兴趣的特征。

library(rgl)
cubit=cube3d(color="blue", alpha=0.3)
cubit$vb[cubit$vb == -1]= 0
gridx=0:5;gridy=0:5;gridz=0:5
temp=cubit
plot3d(temp,box=FALSE,axes=FALSE,xlab="",ylab="",zlab="")
wire3d(temp,add=TRUE,color="blue",alpha=1)
for(ix in gridx){
  for(iy in gridy){
    for(iz in gridz){
      temp$vb[1,]=cubit$vb[1,]+ix
      temp$vb[2,]=cubit$vb[2,]+iy
      temp$vb[3,]=cubit$vb[3,]+iz
        shade3d(temp,add=TRUE,,alpha=runif(1))      
        wire3d(temp,add=TRUE,color="blue")
    }
  }
}

我使用过类似的东西,但我注意到内存大小增长得非常快(我不能超过 60000 个体素,使用 3-4Gb RAM)。我已经尝试使用 plot3D 包中的 cube3D 进行类似的操作,认为非交互式绘图会(应该!)更节省内存,但由于某种原因,这个包的性能更差(只有 1000 个体素)。如果你有一个实心立方体,那么你可以更聪明地只使用 ploygon3D 图绘制外边缘......但这不是我的情况。我仍在使用 R 功能寻找更好的性能,但我认为我应该添加到这个对话中,以防任何其他流浪灵魂也在这里穿越。

于 2015-02-17T11:12:09.293 回答