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

Plotly绘图z值错误:曲面与切平面绘制异常求助

问题分析与修正代码

核心问题

  1. 原代码中x和y采用等长离散采样,点(0,3)不在采样点集合中,导致可视化时红色标记点看起来不在曲面上(数学上它确实属于连续曲面和切平面)。
  2. 用%o%外积计算曲面矩阵的写法不够直观,易引发维度混淆。

修正后的代码

library(plotly)

# 调整采样序列,确保(0,3)在采样点内
x <- seq(from = -3, to = 3, by = 0.1)
y <- seq(from = -2, to = 4, by = 0.1)

# 计算原曲面z值,用outer函数更直观
z <- outer(x, y, function(x_val, y_val) x_val^2 + 2*x_val - y_val)

# 计算切平面:基于切点(0,3,-3)的公式 z = z0 + f_x(x0,y0)(x-x0) + f_y(x0,y0)(y-y0)
# 偏导f_x=2x+2(在(0,3)处为2),f_y=-1(在(0,3)处为-1)
z1 <- outer(x, y, function(x_val, y_val) -3 + 2*(x_val - 0) -1*(y_val - 3))

fig <- plot_ly(showscale = FALSE) %>%
  add_surface(z = z, x = x, y = y, name = "原曲面", opacity = 0.7) %>%
  add_surface(z = z1, x = x, y = y, name = "切平面", opacity = 0.5) %>%
  add_markers(x = 0, y = 3, z = -3, 
              marker = list(color = "red", size = 8),
              name = "切点")

fig <- fig %>% layout(
  scene = list(
    xaxis = list(title = "x"),
    yaxis = list(title = "y"),
    zaxis = list(title = "z"),
    camera=list(eye = list(x=1.87, y=0.88, z=-0.64))
  )
)

fig

关键修正点

  • 将length.out=100改为by=0.1,确保0在x序列、3在y序列中,红色标记点会精准落在曲面和切平面的采样点上。
  • 用outer()函数替代%o%外积,代码可读性更强,避免维度匹配错误。
  • 完整写出切平面推导公式,后续修改切点时更易维护。
  • 增加曲面名称、坐标轴标签,调整曲面透明度,让切点与两个曲面的空间关系更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:55:58