使用matplotlib和pyplot进行2D坐标的简单动画

Abh*_*Das 7 python animation matplotlib python-2.7

我是matplotlib的新手.我有一个xy坐标列表,我在python中更新,并希望使用matplotlib的pyplot进行动画处理.我想提前指定x范围和y范围.以下是我目前的代码:

import matplotlib.pyplot as plt
x=[1,2,3,4]
y=[5,6,7,8]
for t in range(100):
    #lists x and y get updated here
    #...
plt.plot(x, y, marker='o', linestyle='None')
plt.show()
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用plt.plot()plt.show() 在迭代循环结束时仅绘制最终坐标.但是我想把这一步放在循环中并在每次迭代时用指定的暂停时间进行绘图,这样我就可以在循环运行时得到一个动画.

只是在循环中移动该语句或在其周围调整是行不通的.我想保持它非常简单,并且不想使用matplotlib.animation.是否有一些简单的方法,而不使用更多的模块和库(只有类似的东西plt.pause(),也许只是更多),让我做我想做的事情?

我在网上查看了很多地方,我在大多数方法面临的问题是我在Windows上使用python(x,y)(即python版本2.7),而使用过于复杂的模块和库的动画在这里崩溃了.

但是,我可以在matplotlib网站上运行像这个例子这样简单的东西,这很接近我想要的,但不完全.所以也许最好的事情是修改这个例子,这个例子适用于我的2D数据(例如1D行).但任何其他建议都是受欢迎的.

bmu*_*bmu 8

这是改编自动画演示:

import matplotlib.pyplot as plt 
import numpy as np

fig, ax = plt.subplots()

x = [1, 2, 3, 4]
y = [5, 6, 7, 8]

for t in range(10):
    if t == 0:
        points, = ax.plot(x, y, marker='o', linestyle='None')
        ax.set_xlim(0, 10) 
        ax.set_ylim(0, 10) 
    else:
        new_x = np.random.randint(10, size=5)
        new_y = np.random.randint(10, size=5)
        points.set_data(new_x, new_y)
    plt.pause(0.5)
Run Code Online (Sandbox Code Playgroud)

虽然这很简单但文档字符串表示它很慢.