使用 matplotlib 和 pyplot 制作二维坐标的简单动画

2023-11-27

我是 matplotlib 的新手。我有一个在 python 中更新的 x-y 坐标列表,并希望使用 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() 在我的迭代循环结束时仅绘制最终坐标。但我想把这一步inside循环并在每次迭代时绘制指定的暂停时间,以便在循环运行时我有一个动画。

仅将该语句移动到循环内或对其进行调整是行不通的。 我想保持它非常简单,但不想使用matplotlib.animation。是否有一些简单的方法,无需使用更多模块和库(仅诸如plt.pause()也许只是多一点)这会让我做我想做的事?

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

但是,我可以运行简单的东西,例如这个例子在 matplotlib 网站上,它接近我想要的,但不完全是。因此,也许最好的事情是对该示例进行修改,使其适用于我的 2D 数据情况(该示例适用于 1D 行)。但欢迎任何其他建议。


这是改编自动画演示:

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)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 matplotlib 和 pyplot 制作二维坐标的简单动画 的相关文章

随机推荐