暂停matplotlib自定义动画循环而不进行轮询

时间:2017-04-13 07:03:36

标签: python animation matplotlib

我有一个动画,我可以根据需要播放和暂停。如下面的代码所示,我暂停动画的方法是间歇性地轮询paused全局状态变量。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
from mpl_toolkits.mplot3d import proj3d

paused = False

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.set_ylim(-100, 100)
ax.set_xlim(-10, 10)
ax.set_zlim(-100, 100)

plt.ion()
plt.show()

def pause_anim(event):
    global paused
    paused = not paused

pause_ax = fig.add_axes((0.7, 0.03, 0.1, 0.04))
pause_button = Button(pause_ax, 'pause', hovercolor='0.975')
pause_button.on_clicked(pause_anim)

x = np.arange(-50, 51)

line = ax.plot([], [], [], c="r")[0]


for y in np.arange(1, 30, 3):
    z = - x**2 + y - 100

    line.set_data(x, 0)
    line.set_3d_properties(z)

    plt.draw()
    plt.pause(0.2)

    while paused:
        plt.pause(0.5)

有没有办法在没有轮询的情况下暂停动画,而是使用某种中断驱动的方法?

0 个答案:

没有答案