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

非规则采样数据下Matplotlib流线(streamplot)绘制方法问询

非规则网格速度场叠加流线图的实现方案

针对非规则散点格式的x、y、u、v数据,无法直接用matplotlib.streamplot的问题,以下是几种可行的实现方法,可直接叠加到你已有的速度大小等值线图上:

方案1:插值为规则网格后使用Matplotlib Streamplot

这是最通用的方案,先将散点数据插值到均匀规则网格,再用原生streamplot绘制流线:

实现步骤&代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata

# 假设你的原始数据为一维数组:x, y, u, v
# 先绘制已有的速度大小等值线图(用tricontourf适配非规则网格)
speed = np.sqrt(u**2 + v**2)
fig, ax = plt.subplots()
contour = ax.tricontourf(x, y, speed)
plt.colorbar(contour)

# 生成覆盖数据范围的规则网格
xi = np.linspace(x.min(), x.max(), 100)  # 可调整网格密度
yi = np.linspace(y.min(), y.max(), 100)
X, Y = np.meshgrid(xi, yi)

# 将u、v插值到规则网格(可选linear/nearest/cubic插值方法)
U = griddata((x, y), u, (X, Y), method='linear')
V = griddata((x, y), v, (X, Y), method='linear')

# 叠加流线图
ax.streamplot(X, Y, U, V, color='k', linewidth=0.8, density=1.2)

plt.show()
  • 若数据存在空白区域,插值会生成NaN,streamplot会自动跳过这些区域
  • 噪声较大的数据建议用method='nearest',追求平滑效果选cubic

方案2:直接用Matplotlib Quiver绘制速度箭头场

无需插值,直接基于原始散点绘制速度箭头,作为流线的替代方案:

# 在已有等值线图基础上添加
ax.quiver(x, y, u, v, color='white', scale=50)  # scale参数调整箭头长度

# 数据点过多时可采样减少密度
sample_interval = 5
ax.quiver(x[::sample_interval], y[::sample_interval], 
          u[::sample_interval], v[::sample_interval], 
          color='white', scale=50)

方案3:基于三角剖分的Matplotlib Streamplot

如果你的数据可生成三角网格(比如有限元输出),可直接用三角剖分参数跳过插值:

import matplotlib.tri as tri

# 生成三角剖分对象
triang = tri.Triangulation(x, y)
# 叠加流线图
ax.streamplot(x, y, u, v, triangulation=triang, color='k')

此方法更贴合原始数据分布,无需插值损失精度。

方案4:用Plotly绘制交互式流线图

Plotly支持交互式操作(缩放、hover查看数据),适合需要探索数据的场景:

import plotly.graph_objects as go

# 同方案1生成规则网格和插值后的U、V、speed_grid
speed_grid = griddata((x, y), speed, (X, Y), method='linear')

fig = go.Figure()
# 添加等值线图
fig.add_trace(go.Contour(x=xi, y=yi, z=speed_grid, colorscale='Viridis'))
# 添加流线图
fig.add_trace(go.Streamline(x=xi, y=yi, u=U, v=V, line=dict(color='black', width=1)))

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:40:06