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

如何在Python的3D框架中绘制不同平面相交的2D速度场?

在Python 3D框架中绘制相交平面的速度场实现方案

完全可以直接在Python的3D绘图环境中实现,没必要分开绘制后再整合——直接在同一个3D轴上叠加两个不同平面的速度场可视化即可。下面以Matplotlib为例,给出具体实现思路和代码示例:

核心实现步骤

  • 准备数据:假设你已有(x,z)平面的速度场分量(x、z方向速度),以及(y,z)平面的速度场分量(y、z方向速度),同时准备对应平面的网格坐标。
  • 创建3D绘图轴:通过Matplotlib的3D投影模式创建绘图轴。
  • 叠加平面可视化:分别在固定y值的xz平面、固定x偏移值的yz平面上绘制速度场(流场或伪彩图均可)。

代码示例(模拟数据)

import matplotlib.pyplot as plt
import numpy as np

# 生成模拟的速度场数据
# -------------------
# xz平面(固定y=0)的网格与速度
x = np.linspace(-5, 5, 20)
z = np.linspace(-5, 5, 20)
X, Z = np.meshgrid(x, z)
Y_xz = np.zeros_like(X)  # xz平面y坐标固定为0
u_xz = np.sin(X) * np.cos(Z)  # x方向速度
v_xz = np.cos(X) * np.sin(Z)  # z方向速度
w_xz = np.zeros_like(u_xz)    # y方向速度为0

# yz平面(固定x=3,自定义偏移量)的网格与速度
y = np.linspace(-5, 5, 20)
Y, Z = np.meshgrid(y, z)
X_yz = np.full_like(Y, 3)  # yz平面x坐标固定为3
u_yz = np.zeros_like(Y)    # x方向速度为0
v_yz = np.sin(Y) * np.cos(Z)  # y方向速度
w_yz = np.cos(Y) * np.sin(Z)  # z方向速度

# 绘制3D相交平面速度场
# -------------------
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(projection='3d')

# 绘制xz平面的箭头流场
ax.quiver(X, Y_xz, Z, u_xz, w_xz, v_xz, color='blue', label='X-Z平面速度场')

# 绘制yz平面的箭头流场
ax.quiver(X_yz, Y, Z, u_yz, v_yz, w_yz, color='red', label='Y-Z平面速度场')

# 配置坐标轴与显示
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.legend()
ax.set_title('3D空间中相交平面的速度场')
ax.view_init(elev=30, azim=45)  # 调整视角

plt.show()

扩展说明

  • 如果需要绘制伪彩填充平面(而非箭头流场),可以用plot_surface或pcolormesh,指定固定的x/y坐标定位平面,同时设置alpha参数调整透明度避免遮挡。
  • 若需更复杂的3D可视化效果,可改用Mayavi库,核心逻辑一致:通过mlab.quiver3d分别在两个固定坐标平面上渲染速度场。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:54:57