我有两个数组(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)
您不需要插值,除非您想在网格中未定义的点上绘制速度,在这些点上您可以进行测量/模拟/其他操作。