如何改进这部分代码以实现连续的图形更新?
时间: 2024-10-14 10:03:40 浏览: 14
计算机图形学画图及代码实现——山农
要实现连续的图形更新,可以考虑使用`matplotlib`的`FuncAnimation`或者`animation`模块,这样可以在每个`step`后自动更新图表而无需手动调用`plt.pause`。这里是一个简化的示例:
```python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
# ...
def update_graph(i):
global income_list, loss_list
income, loss = Env.step(act)
income_list.append(income)
loss_list.append(loss)
ax1.clear() # 更新轴并清除旧数据
ax2.clear()
ax1.plot(income_list, label='income')
ax2.plot(loss_list, label='loss')
ani = FuncAnimation(fig1, update_graph, frames=np.arange(2000), interval=50) # 每50毫秒更新一次
plt.show(block=False) # block=False保持窗口打开直到关闭
while True:
plt.pause(0.001) # 尽量小的暂停时间保证动画流畅,可能会导致窗口关闭过快,需要视实际情况调整
```
在这个例子中,我们创建了一个`FuncAnimation`对象,它会定期(间隔50毫秒)调用`update_graph`函数,更新数据并在图表上反映出来。同时,通过`plt.show(block=False)`使得窗口不会在完成第一次动画后立即关闭,允许用户查看完整的动画过程。最后,循环中的`plt.pause`用于保持窗口更新,直到用户手动关闭。注意,实际应用中可能需要调整`interval`和`plt.pause`的时间以达到最佳效果。
阅读全文