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

使用Plotly绘制3D空间相交平面时仅显示XY平面问题求助

问题原因与解决方案

你遇到的问题是创建ysurf和xsurf时,没有正确构造符合Plotly Surface要求的二维网格数据。Plotly的Surface组件要求x、y、z三个参数的维度必须严格匹配,且需要通过二维网格定义平面的完整范围,仅传入一维数组无法正确渲染垂直平面。

修正后的代码

import plotly.graph_objects as go
import numpy as np

# 生成坐标轴范围的数组
axis_range = np.linspace(0, 2, 3)

# 1. z=1的平面(XY平面方向)
x_z1, y_z1 = np.meshgrid(axis_range, axis_range)
z_z1 = np.ones_like(x_z1)
zsurf = go.Surface(x=x_z1, y=y_z1, z=z_z1)

# 2. y=1的平面(XZ平面方向)
x_y1, z_y1 = np.meshgrid(axis_range, axis_range)
y_y1 = np.ones_like(x_y1)
ysurf = go.Surface(x=x_y1, y=y_y1, z=z_y1)

# 3. x=1的平面(YZ平面方向)
y_x1, z_x1 = np.meshgrid(axis_range, axis_range)
x_x1 = np.ones_like(y_x1)
xsurf = go.Surface(x=x_x1, y=y_x1, z=z_x1)

fig = go.Figure()
fig.add_trace(zsurf)
fig.add_trace(ysurf)
fig.add_trace(xsurf)

fig.show()

关键修正点

  • 使用np.meshgrid生成二维网格数组:每个平面都需要基于两个坐标轴生成对应的二维网格,确保x、y、z三者的维度完全一致
  • 固定值数组维度匹配:比如y=1的平面,y_y1需要和x_y1、z_y1的维度相同,用np.ones_like()可以快速生成同维度的全1数组
  • 明确平面的坐标轴对应关系:垂直平面需要基于另外两个轴的网格来定义,比如x=1的平面需要基于y和z的网格来构造数据

运行修正后的代码后,三个平面会正常显示,且相交于点(1, 1, 1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:17:06