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

如何在R中将带约束的2D绘图推广为3D绘图(含约束立方体)

R实现带约束立方体的3D散点图

步骤1:生成模拟数据与约束判断

先生成包含x、y、z维度的随机数据,同时根据约束条件给点标记颜色:

  • 符合约束:-7 < x < 7、-5 < y < 5、-4 < z < 4,标记为深蓝色
  • 超出约束:标记为红色
# 加载所需包
library(rgl)

# 设置随机种子保证结果可复现
set.seed(123)

# 生成200条模拟数据
n <- 200
data <- data.frame(
  x = runif(n, -10, 10),
  y = runif(n, -8, 8),
  z = runif(n, -6, 6)
)

# 判断点是否在约束立方体内
data$in_bounds <- with(data, x > -7 & x < 7 & y > -5 & y < 5 & z > -4 & z < 4)

# 分配颜色:深蓝色(符合约束)/红色(超出约束)
data$color <- ifelse(data$in_bounds, "#003366", "#ff3333")

步骤2:绘制3D散点图

用rgl::plot3d绘制3D散点图,通过颜色参数区分约束内外的点:

# 初始化3D绘图窗口
open3d()

# 绘制3D散点图
plot3d(
  data$x, data$y, data$z,
  col = data$color,
  size = 5,
  xlab = "X", ylab = "Y", zlab = "Z",
  main = "3D散点图与约束立方体"
)

步骤3:绘制约束立方体

构造立方体的8个顶点坐标,再通过顶点连接顺序绘制12条边框:

# 定义约束立方体的边界值
x_min <- -7; x_max <- 7
y_min <- -5; y_max <- 5
z_min <- -4; z_max <- 4

# 构造立方体的8个顶点
cube_vertices <- rbind(
  c(x_min, y_min, z_min), c(x_max, y_min, z_min),
  c(x_max, y_max, z_min), c(x_min, y_max, z_min),
  c(x_min, y_min, z_max), c(x_max, y_min, z_max),
  c(x_max, y_max, z_max), c(x_min, y_max, z_max)
)

# 定义立方体12条边的顶点连接索引
cube_edges <- matrix(
  c(1,2, 2,3, 3,4, 4,1,
    5,6, 6,7, 7,8, 8,5,
    1,5, 2,6, 3,7, 4,8),
  ncol = 2, byrow = TRUE
)

# 绘制立方体边框(灰色虚线,加粗显示)
lines3d(
  cube_vertices[cube_edges, ],
  col = "#666666",
  lwd = 2,
  lty = 2
)

补充说明

  • 若需要填充立方体的面,可使用quads3d函数分别绘制6个面的顶点
  • rgl包支持交互操作:拖拽可旋转视角、滚轮可缩放,方便查看3D细节
  • 偏好静态3D图的话,也可以用scatterplot3d包,但交互性不如rgl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:27