R可视化一个大盒子内的许多3D盒子
R Visualize many 3D boxes inside a big box
我需要以某种方式制作 3D 盒子的交互式可视化,其中包含许多 3D 盒子。
我最初的粗略想法如下。在 2D 中我可以使用
x<-matrix(runif(25),nrow=5,ncol=5);
image(x)
为矩阵中的每个单元格着色,使其看起来像大矩形中包含小矩形。
如何将其转换为 3D?假设在 3D 中,大盒子的大小为 10x10x10。在实践中,我想选择 box.I 中 1000 个元素中每一个元素的颜色知道 rgl 可用于制作交互式 3D 图,但我在理解如何为每个元素着色时遇到问题3D数组。
如果您对更好的解决方案有一些建议,我很乐意听取。
如果我理解正确,我相信这应该有效:
library(rgl)
grd <- expand.grid(x=seq(0,10,2), y=seq(0,10,2), z=seq(0,10,2))
grd$dist <- sqrt(grd$x^2 + grd$y^2 + grd$z^2) # distance to coordinate 0,0,0
grd$col <- rainbow(ceiling(max(grd$dist+1)))[ceiling(grd$dist+1)]
grd$alpha <- rep(c(0.2, 1), each=nrow(grd)/2)
open3d()
for(i in seq(nrow(grd))){
shade3d( translate3d( cube3d(col = grd$col[i]), grd$x[i], grd$y[i], grd$z[i]) , alpha=grd$alpha[i])
}
rgl.snapshot("cube.png")
此示例适用于 6x6x6 立方体,颜色基于其中心到原点的欧氏距离。希望这会向您展示一种根据需要调整颜色的方法。
我需要以某种方式制作 3D 盒子的交互式可视化,其中包含许多 3D 盒子。
我最初的粗略想法如下。在 2D 中我可以使用
x<-matrix(runif(25),nrow=5,ncol=5);
image(x)
为矩阵中的每个单元格着色,使其看起来像大矩形中包含小矩形。
如何将其转换为 3D?假设在 3D 中,大盒子的大小为 10x10x10。在实践中,我想选择 box.I 中 1000 个元素中每一个元素的颜色知道 rgl 可用于制作交互式 3D 图,但我在理解如何为每个元素着色时遇到问题3D数组。
如果您对更好的解决方案有一些建议,我很乐意听取。
如果我理解正确,我相信这应该有效:
library(rgl)
grd <- expand.grid(x=seq(0,10,2), y=seq(0,10,2), z=seq(0,10,2))
grd$dist <- sqrt(grd$x^2 + grd$y^2 + grd$z^2) # distance to coordinate 0,0,0
grd$col <- rainbow(ceiling(max(grd$dist+1)))[ceiling(grd$dist+1)]
grd$alpha <- rep(c(0.2, 1), each=nrow(grd)/2)
open3d()
for(i in seq(nrow(grd))){
shade3d( translate3d( cube3d(col = grd$col[i]), grd$x[i], grd$y[i], grd$z[i]) , alpha=grd$alpha[i])
}
rgl.snapshot("cube.png")
此示例适用于 6x6x6 立方体,颜色基于其中心到原点的欧氏距离。希望这会向您展示一种根据需要调整颜色的方法。