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

基于Plotly绘制旋转对称3D Streamtube流管图的问题咨询

Plotly 3D流管图绘制问题解答

问题1:是否可以在图表下部也展示部分流管?

可以,直接调整流管起始点的坐标范围即可。你此前应该仅设置了中上部的起始点位,只需新增z值较低的起始点坐标组,传入streamtube的对应参数即可。如果下部矢量场强度较低,可适当调低sizeref参数避免流管过细无法显示,也可通过starts参数单独设置下部起始点的采样密度,优先覆盖需要展示的特征区域。

问题2:如何翻转z轴,让流管从-z向+z方向延伸,与截面流线图的表现一致?

有两种可直接落地的方案:

  • 仅调整显示效果:在图表布局配置中添加scene = dict(zaxis = dict(autorange="reversed")),无需修改原始矢量数据,坐标轴翻转后流管的展示方向会自动匹配预期。
  • 调整流管积分方向:如果需要从数据层面改变流管延伸逻辑,可将矢量场的w分量整体取反后重新绘制,可实现同等展示效果。

问题3:Plotly流管图要求的数据结构规范,如何正确转换原始数据适配绘图要求?

Plotly的go.Streamtube接收的三维矢量场为规则网格下的三维张量结构,核心参数的维度匹配规则如下:

  • x/y/z:均为一维数组,形状分别为(Nx,)、(Ny,)、(Nz,),对应三个坐标轴的所有网格点坐标
  • u/v/w:均为三维数组,形状统一为(Ny, Nx, Nz),每个位置的数值对应坐标(x=x[i], y=y[j], z=z[k])处的三个矢量分量

你用到的np.moveaxis()是适配维度的常用方法:如果你的原始数据维度顺序不符合(Ny, Nx, Nz)的要求,仅需要通过轴移动调整维度顺序即可,不需要修改数值本身。比如你的原始u分量形状为(10, 101, 101),对应(y切片数, x网格数, z网格数),就可以用u = np.moveaxis(u, 2, 1)调整为符合要求的维度结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 21:15:03