python - python matplotlib动画中的停止/开始/暂停

标签 python animation matplotlib

我在 matplotlib 的动画模块中使用 FuncAnimation 来制作一些基本动画。这个函数永远循环播放动画。有没有一种方法可以让我通过鼠标点击来暂停和重新启动动画?

最佳答案

这里是 a FuncAnimation example我修改为在鼠标点击时暂停。 由于动画是由生成器函数 simData 驱动的,当全局变量 pause 为 True 时,产生相同的数据会使动画显示为暂停。

paused 的值是通过设置事件回调来切换的:

def onClick(event):
    global pause
    pause ^= True
fig.canvas.mpl_connect('button_press_event', onClick)

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

pause = False
def simData():
    t_max = 10.0
    dt = 0.05
    x = 0.0
    t = 0.0
    while t < t_max:
        if not pause:
            x = np.sin(np.pi*t)
            t = t + dt
        yield x, t

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

def simPoints(simData):
    x, t = simData[0], simData[1]
    time_text.set_text(time_template%(t))
    line.set_data(t, x)
    return line, time_text

fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot([], [], 'bo', ms=10)
ax.set_ylim(-1, 1)
ax.set_xlim(0, 10)

time_template = 'Time = %.1f s'
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
fig.canvas.mpl_connect('button_press_event', onClick)
ani = animation.FuncAnimation(fig, simPoints, simData, blit=False, interval=10,
    repeat=True)
fig.show()

关于python - python matplotlib动画中的停止/开始/暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732379/

相关文章:

javascript - 在这个 div 幻灯片上,在 margin-left 幻灯片之后有不一致的边距跳跃。它从第二个周期开始

javascript - Angular ng-view幻灯片动画

python - matplotlib 中的偏移辅助轴

python - 如何在 Matplotlib 中反转轴并设置极坐标图的零位置?

python - 使用python从pyudev获取设备路径

Python OpenCV 视频分辨率

Python 尝试解析输入

python - 一个biopython脚本将一个大的fasta文件分割成多个文件

javascript - 有没有可能让这个 'Water Shader Animation'不是球形的?

python - 我的一些 Python 包无法在 OSX 控制台中运行