首页 > 解决方案 > python matplotlib:onclick不起作用,请告诉我为什么以及如何暂停和恢复动画,

问题描述

想在鼠标点击图形的时候暂停和恢复动画,但是不行,请帮我解决,谢谢,

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

x = np.arange(100)
y = np.arange(10, 110)

pause = False
def onClick(event):
    global pause
    pause ^= True

fig = plt.figure()
ax = fig.add_subplot()

line, = ax.plot([], [])

ax.set_ylim(0, 120)
ax.set_xlim(0, 100)


def runData(i):

    line.set_data(x[:i], y[:i])

    return line

fig.canvas.mpl_connect('button_press_event', onClick)    

ani = animation.FuncAnimation(fig, runData, frames=len(x), blit=False, interval=10, repeat=True)

plt.show()

标签: pythonmatplotlibanimationplotmatplotlib-animation

解决方案


您需要pauserunData(). 就这个:

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

x = np.arange(100)
y = np.arange(10, 110)

pause = False
def onClick(event):
    global pause
    pause ^= True

fig = plt.figure()
ax = fig.add_subplot()
line, = ax.plot([], [])
ax.set_ylim(0, 120)
ax.set_xlim(0, 100)

def runData(i):
    if not pause:
        line.set_data(x[:i], y[:i])
        return line

fig.canvas.mpl_connect('button_press_event', onClick)    
ani = animation.FuncAnimation(fig, runData, frames=len(x), blit=False, interval=10, repeat=True)
fig.show()

推荐阅读