Matplotlib:为多个散点图设置动画

时间:2018-04-14 19:04:42

标签: python matplotlib

我试图创建一个动画,显示多个粒子在四处移动。

如果我有一个粒子,一个数组在动画的每个步骤中给出该粒子的位置,我就可以使用它(主要得益于我在stackoverflow上找到的其他答案的大量帮助)。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation


positions = np.array([[2,2],[3,3],[4,4]])


def init():
    scatterplot.set_offsets([[], []])
    return [scatterplot]

def update(i, scatterplot, positions):
    scatterplot.set_offsets(positions[i])
    return [scatterplot]

fig = plt.figure()

scatterplot = plt.scatter([], [], s=100)
plt.xlim(0,5)
plt.ylim(0,5)
anim = animation.FuncAnimation(
fig, update, init_func=init, fargs=(scatterplot, positions), interval=1000, frames=3,
blit=True, repeat=True)
plt.show()

但我无法弄清楚如何在同一个动画中添加更多粒子。 让我们说我想添加第二个粒子位置

positions2 = np.array([[2,1][3,2][4,3]])

让它在相同的散点图中移动,我该如何管理呢?

我是一个matplotlib新手,并且一直在谷歌上搜索无济于事,非常感谢任何帮助:)

编辑: 我最终想出来了,只是正确格式化数据。

positions = np.array([[[2,2],[2,1]],[[3,3],[3,2]],[[4,4],[4,3]]])

如果数组包含第一步中的所有位置,则第二步中的所有位置等都有效。 我更喜欢获得一个颜色pr移动点,以跟踪它们,但至少它现在有效。

1 个答案:

答案 0 :(得分:1)

我最终想出来了,只是正确格式化数据。

positions = np.array([[[2,2],[2,1]],[[3,3],[3,2]],[[4,4],[4,3]]])

如果数组包含第一步中的所有位置,则第二步中的所有位置等都有效。 我宁愿得到一个颜色pr移动点,以跟踪它们,但至少它现在有效。