R: contour3d 添加网格到 3D 显示

R: contour3d add grid to 3D display

我正在 https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4911196/ 使用 brainR 在脑图像上尝试 contour3D,但我想在 contour 3D 中添加网格。

这是一个可重现的例子:

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
        package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 0.1, draw = TRUE)

现在,我想在显示器周围绘制一个框并为该框绘制一个网格。我该怎么做呢?我试图添加一个框,但即使是 addbox=T 似乎也没有做任何事情?有什么建议么?非常感谢!

我不确定你想要什么,但如果你想要一个完整的框,显示周围有刻度线和刻度线,下面的代码应该可以做到。我也改为 alpha = 1 因为否则我 发现网格线令人困惑。

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
                                  package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 1, draw = TRUE)
decorate3d()
grid3d(c("x-", "x+", "y-", "y+", "z-", "z+"))

这会在小的旋转后产生这个输出:

根据评论进行编辑:

要显示没有刻度和数字的框架,请使用 box3d() 而不是 decorate3d()

可以使用 bbox3d() 函数为立方体添加背景颜色。默认情况下,它只绘制立方体的 3 个面:我觉得这种方式很丑,但你的口味可能会有所不同。我 更喜欢看到它的正面;可能是 3、4 或 5 张面孔。这是代码:

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
                                  package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 1, draw = TRUE)
box3d()
grid3d(c("x-", "x+", "y-", "y+", "z-", "z+"))
bbox3d(col="cyan", alpha = c(0.5, 0), shininess = 100,
       draw_front = TRUE, front = "culled")

这是您使用上面的代码得到的结果:

省略 bbox3d 调用的最后两个参数 3 面显示。在这个方向上它看起来是一样的,但是当你旋转显示器时会有所不同。