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

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

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

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

但是,我可以在 matplotlib 站点上运行类似这个示例的简单内容,这与我想要的很接近,但并不完全。所以也许最好的办法是修改这个例子,适用于我的二维数据情况(这个例子是一维行)。但欢迎任何其他建议。

4

1 回答 1

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)

虽然这很简单,但文档字符串说它很慢。

于 2012-06-05T11:42:30.020 回答