有没有办法在不关闭窗口的情况下更新 matplotlib 图?

Mix*_*nik 2 python matplotlib

我对 matplotlib 完全陌生,经验丰富,但对 python 很生疏,目前我正在努力使用 matplotlib。我正在尝试对情节上的一个点进行动画处理,有点像这样: https: //www.desmos.com/calculator/rv8gbimhon

我已经为其编写了代码,但绘图不会在 while 循环期间实时更新点,相反,while 循环会暂停,直到我关闭绘图窗口并且循环的下一次迭代发生,重新打开具有更新坐标的绘图。有没有办法在不打开和关闭窗口的情况下移动 matplotlib 上的点?

我的代码:

import numpy as np
import time
t = 0
start_time = time.time()
while t < 30:
    end_time = time.time()
    t = end_time - start_time
    print(t)
    plt.plot(t,t,"g^")
    plt.show()
Run Code Online (Sandbox Code Playgroud)

小智 6

循环更新绘图的一种选择是打开交互模式并使用暂停更新绘图。

例如:

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

point = plt.plot(0, 0, "g^")[0]
plt.ylim(0, 5)
plt.xlim(0, 5)
plt.ion()
plt.show()

start_time = time.time()
t = 0
while t < 4:
    end_time = time.time()
    t = end_time - start_time
    print(t)
    point.set_data(t, t)
    plt.pause(1e-10)
Run Code Online (Sandbox Code Playgroud)

但是,对于更高级的动画,我建议使用动画类。