我有一组带有x,y,z和vx,vx,vz的粒子,我想绘制一个流,轮廓和箭袋图来显示它们的运动。例如箭头指示vx,vy,vz的方向,其中该位置的大小由粒子的局部速度定义,它们的位置由x,y,z指定(因此一个带有x-pos对y-pos的图与quivers / contours / streams表明它们的速度)。我可以用2D来开始,因为我正在单独进行xy,yz,xz投影,并且如果你能提供帮助,则可以使用2D解决方案进行退化。有一个很好的例子,我想要here,但我无法访问这个工具。
我的x,y和vx,vy的一个例子是:
x = [-0.00273269 -0.01065061 -0.00043434 ..., 0.09494386 0.09479769]
y = [ 0.01634852 -0.00807868 -0.00833457 ..., 0.07971196 0.0834935]
vx = [ 45.82292815 27.16221568 12.9619711 ..., 128.62980572 138.51976486]
vy = [ 44.11188404 21.35615525 -25.9338436 ..., 31.25305638 32.37035995]
我的可怕尝试:
img_width = 300
vector_resolution = 40
X, Y = np.meshgrid(np.arange(-img_width / 2, img_width / 2, img_width / vector_resolution),
np.arange(-img_width / 2, img_width / 2, img_width / vector_resolution))
vx = np.histogram(vx,bins=vector_resolution-1)[1]
vy = np.histogram(vy,bins=vector_resolution-1)[1]
vz = np.histogram(vz,bins=vector_resolution-1)[1]
ax.quiver(X, Y, vx, vy, color='black', edgecolor='black')
然而,这似乎并没有覆盖它们应该存在的箭头标记,可能是因为我使用了错误的方法。
我也试过一个流图:
ax.streamplot(X, Y, vx, vy, density=0.6, color='k', linewidth=2)
但是我遇到了形状错误。我的目标是Matplotlib gallery上的那种例子。
我试过了轮廓:
Z = ml.griddata(vx, vy, vz, X, Y,interp='linear')
ax.contour(X,Y,Z, 15, linewidths = 0.5, colors = 'k')
为此,我的目标是像contour example here这样的颜色条指示速度。 然而,上述内容并未提供有意义的结果。有没有什么好的模块可以将这种粒子数据转换为箭头,流和等高线图所需的分箱组件?感谢。