Matplotlib:叠加多个二维箭头图随时间变化

2 投票
1 回答
2943 浏览
提问于 2025-04-17 20:05

我有一些在二维空间中随时间变化的向量场。通常,我们可以把这些向量场的变化想象成一部二维电影,里面所有的箭头的大小和方向都会随着时间而变化。

具体来说,我现在有两个数组U和V,它们的形状都是(x,y,t),其中前两个维度是空间坐标,t代表某个特定的时间点。我可以用这个代码来可视化某个特定时间的向量场:matplotlib.pyplot.quiver(U[:,:,i], V[:,:,i]),这里的i就是特定的时间索引。目前,我可以通过一个循环来遍历所有的i,逐个显示这些变化。

不过,我想在一个二维图上同时显示每个时间点的箭头图。我想给每个索引i分配一个不同的颜色,这样在某个特定时间点的所有箭头就会显示成同一种颜色。

有没有人能给我一些建议呢?

提前谢谢大家!

1 个回答

9

你可以尝试以下的方法:

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()

在这里输入图片描述

撰写回答