You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中绘制3D空间内拆分为8个彩色小立方体的大立方体

R语言3D拆分立方体可视化实现

你的原始数据存在几处笔误,我先修正后基于rgl包实现3D交互可视化,8个小立方体使用高区分度颜色分别填充,外层大立方体使用黑色边框展示避免遮挡内部结构。


步骤1:修正后的数据集

原始type_cube向量中存在2处typ3_4拼写错误、1处多余的换行引号,修正后完整数据如下:

type_cube <- c("type_8","type_8","type_8","type_8",
               "type_8","type_8","type_8","type_8",
               "type_7","type_7","type_7","type_7", 
               "type_7","type_7","type_7","type_7",
               "type_6","type_6","type_6","type_6",
               "type_6","type_6","type_6","type_6",
               "type_5","type_5","type_5","type_5",
               "type_5","type_5","type_5","type_5",
               "type_4", "type_4","type_4","type_4",
               "type_4","type_4","type_4","type_4",
               "type_3","type_3","type_3","type_3",
               "type_3","type_3","type_3","type_3",
               "type_2","type_2","type_2","type_2",
               "type_2","type_2","type_2","type_2",
               "type_1","type_1","type_1","type_1",
               "type_1","type_1","type_1","type_1",
               "big_cube", "big_cube", "big_cube", 
               "big_cube", "big_cube", "big_cube", 
               "big_cube", "big_cube")

x <- c(0.0,0.0,0.5,0.5,0.5,0.0,0.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,
       1.0,1.0,0.0,0.5,0.5,0.0,0.0,0.0,0.5,0.5,0.0,0.5,0.5,0.0,0.0,0.5,
       0.0,0.5,1.0,0.5,0.5,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,
       0.5,0.5,1.0,1.0,0.0,0.5,0.5,0.0,0.0,0.5,0.5,0.0,1.0,1.0,
       0.5,0.5,0.5,0.5,1.0,1.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0)

y <- c(0.0,0.5,0.5,0.0,0.0,0.0,0.5,0.5,0.0,0.0,0.5,0.5,0.0,0.5,0.5,
       0.0,0.5,0.5,1.0,1.0,0.5,1.0,1.0,0.5,0.0,0.0,0.5,0.5,0.0,0.0,
       0.5,0.5,0.5,0.5,1.0,1.0,0.5,1.0,1.0,0.5,0.0,0.0,0.5,0.5,0.0,
       0.5,0.5,0.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,
       0.5,1.0,1.0,0.5,0.0,1.0,1.0,0.0,0.0,0.0,1.0,1.0)

z <- c(0.0,0.0,0.0,0.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.0,0.0,0.0,
       0.0,0.5,0.5,0.5,0.5,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,
       0.5,0.5,0.5,0.5,0.5,0.5,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,
       0.5,0.5,0.5,1.0,1.0,1.0,1.0,0.5,0.5,0.5,0.5,1.0,1.0,1.0,1.0,
       0.5,0.5,0.5,0.5,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0)

data <- data.frame(type_cube,x,y,z)

步骤2:安装加载依赖包

使用R专门的3D可视化包rgl实现交互展示:

# 首次使用先安装包
# install.packages("rgl")
library(rgl)

步骤3:定义颜色映射并绘制

# 8个小立方体高区分度配色
cube_colors <- c(
  "type_1" = "#FF3333",
  "type_2" = "#FF9933",
  "type_3" = "#FFFF33",
  "type_4" = "#33FF33",
  "type_5" = "#33FFFF",
  "type_6" = "#3333FF",
  "type_7" = "#9933FF",
  "type_8" = "#FF33FF"
)

# 清空3D画布
open3d()

# 遍历绘制所有小立方体
for (cube_type in names(cube_colors)) {
  vert <- data[data$type_cube == cube_type, c("x","y","z")]
  mesh <- cube3d()
  mesh$vb <- rbind(t(vert), 1)
  # alpha参数控制透明度,方便观察相邻立方体结构
  shade3d(mesh, col = cube_colors[cube_type], alpha = 0.8)
}

# 绘制外层大立方体边框
big_vert <- data[data$type_cube == "big_cube", c("x","y","z")]
big_mesh <- cube3d()
big_mesh$vb <- rbind(t(big_vert), 1)
wire3d(big_mesh, col = "black", lwd = 2)

# 调整初始视角
view3d(theta = 30, phi = 30, zoom = 0.8)

运行完成后会弹出独立的3D交互窗口,可通过鼠标拖拽旋转视角、滚轮缩放观察结构。


内容的提问来源于stack exchange,提问作者mraveek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:06:05