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

如何在mgcViz生成的3D绘图中添加z=5位置的水平平面?

问题背景

在R环境中使用如下代码,基于mgcViz、rgl包绘制GAM模型的3D可视化结果:

library(mgcViz)
library(rgl)
n <- 500
x <- rnorm(n); y <- rnorm(n); z <- rnorm(n)
ob <- (x-z)^2 + (y-z)^2 + rnorm(n)
b <- gam(ob ~ s(x, y, z))
b <- getViz(b)

plotRGL(sm(b, 1), fix = c("z" = 0), residuals = TRUE)

需要在生成的3D图中添加位于z=5坐标处的简单水平平面。

实现方案

plotRGL的渲染底层基于rgl包,绘制完基础图形后,直接调用rgl的图层函数叠加平面即可,不需要修改原有绘图逻辑。

  • 首先区分两个容易混淆的z坐标:
    • 代码中fix = c("z" = 0)固定的是模型输入协变量z的取值为0,对应协变量空间的切片
    • 需要添加的z=5水平平面,是3D绘图空间中垂直轴(对应模型预测响应值)高度为5的平面
  • 叠加平面的代码,直接接在原有绘图代码后运行即可:
# 提取当前绘图的坐标轴范围,保证平面尺寸和现有图幅匹配
plot_bbox <- par3d("bbox")
x_seq <- seq(plot_bbox[1], plot_bbox[2], length.out = 25)
y_seq <- seq(plot_bbox[3], plot_bbox[4], length.out = 25)
plane_mat <- matrix(5, nrow = length(x_seq), ncol = length(y_seq))

# 添加半透明水平平面
surface3d(
  x = x_seq,
  y = y_seq,
  z = plane_mat,
  color = "#2c7bb6", # 自定义平面颜色
  alpha = 0.4, # 自定义透明度,取值范围0-1
  lit = FALSE
)

参数调整说明

  • 若要调整平面透明度,修改alpha参数即可,数值越小平面越透明
  • 若要修改平面颜色,替换color的色值即可
  • 如果需求是将协变量z固定为5绘制模型切片平面,不需要额外加图层,直接将原有plotRGL中的参数改为fix = c("z" = 5)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:12:22