Matplotlib:随着时间的推移叠加多个2d箭袋图

时间:2013-03-23 23:24:50

标签: python matplotlib

我有一些矢量场在2d空间和时间上变化。传统上,人们可以将矢量场的演变视为2D电影,其中所有箭的大小和角度都会随时间变化。

显而易见,目前我的U和V各有形状(x,y,t),其中dims 0和1是空间坐标,t是特定时间片。我可以将矢量字段可视化为特定时间:matplotlib.pyplot.quiver(U[:,:,i], V[:,:,i])其中i是特定时间索引。目前,我可以在for循环中迭代所有i来显示这种演变。

但是,我想在一个二维图上及时显示每个箭袋图。为此,我想将每个索引i指定为与给定色彩映射不同的颜色。因此,来自特定时间点的所有箭数都显示为单一颜色。

有人可以建议一种方法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:6)

您可以采取以下措施:

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt

U = np.random.rand(10, 10, 10) - 0.5
V = np.random.rand(10, 10, 10) - 0.5
cmap = plt.cm.jet
time_samples = U.shape[-1]
for t in xrange(time_samples):
    plt.quiver(U[..., t], V[..., t], color=cmap(j/time_samples))
plt.show()

enter image description here