使用x,y,z位置和vx,vy,vz粒子速度绘制轮廓,流和箭头图

时间:2015-01-29 22:34:37

标签: python matplotlib stream contour particles

我有一组带有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,但我无法访问这个工具。

enter image description 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这样的颜色条指示速度。 然而,上述内容并未提供有意义的结果。有没有什么好的模块可以将这种粒子数据转换为箭头,流和等高线图所需的分箱组件?感谢。

0 个答案:

没有答案