Quiver图中的下采样速度信息



我有两个数组(vel_y,vel_z(,分别表示y和z方向上的速度,它们的形状都是(512512(,我试图使用颤动图来表示。以下是我如何绘制箭袋:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,512,num=512)
[X,Y] = np.meshgrid(x,x)
fig, ax = plt.subplots(figsize=(7,7))
ax.quiver(X,Y,vel_y,vel_z,np.arctan2(vel_z,vel_y),pivot='mid',units='x',scale=2)

arctan2((调用是为了使不同的方向有不同的颜色,如这个答案所示。显然,绘制这些箭头中的所有512个2会导致绘制混乱且难以解析,您可以在此处看到:Quiver Plot。


我想知道是否有更好的方法来缩放/表示箭头,使其更可读?

然而,我的主要问题是如何对速度信息进行"下采样",从绘制512个2箭头到100个2。这是否需要在定义速度的点之间进行插值?

谢谢!

实现这一点的简单方法是,在给定给箭袋的每个向量中,在N上取一点。

对于给定的np.array,可以使用以下语法执行此操作:a[::N]。如果您有多个维度,请在每个维度中重复此操作(您可以为每个维度提供不同的滑动(:a[::N1, ::N2]

在您的情况下:

N1 = 5
N2 = 5
ax.quiver(X[::N1, ::N2], Y[::N1, ::N2], vel_y[::N1, ::N2], vel_z[::N1, ::N2], np.arctan2(vel_z,vel_y)[::N1, ::N2], pivot='mid',units='x',scale=2)

您不需要插值,除非您想在网格中未定义的点上绘制速度,在这些点上您可以进行测量/模拟/其他操作。

最新更新