matplotlib之pyplot模块——暂停(pause())

本文详细介绍了matplotlib库中pause函数的功能与实现原理。该函数可在绘制过程中暂停指定时间,保持图形更新的同时允许事件循环继续运行。适用于动态图表的实时展示。
该文章已生成可运行项目,

当前有效matplotlib版本为:3.4.1

pause函数概述

pause函数功能运行GUI事件循环若干秒。

pause函数的签名为matplotlib.pyplot.pause(interval)。参数interval表示秒数,类型为整数。

如果当前有活动的图形,在pause函数运行前,图形将会更新并显示,在等待期间事件循环会一直运行,直到暂停时间interval秒后结束。
如果没有当前有活动的图形,将会调用time.sleep函数,休眠interval秒。

pause函数原理

根据源码可知,pause函数会检测当前是否有活动的图形对象,如果有,则会检测figure.stale(它代表图形已发生变化,需要重绘),如果为True则会重绘图形,并采用非阻塞形式显示图形,然后运行事件循环interval秒。如果没有活动图形,直接运行time.sleep函数,休眠interval秒。

matplotlib.pyplot.pause()

def pause(interval):
    manager = _pylab_helpers.Gcf.get_active()
    if manager is not None:
        canvas = manager.canvas
        if canvas.figure.stale:
            canvas.draw_idle()
        show(block=False)
        canvas.start_event_loop(interval)
    else:
        time.sleep(interval)

案例:pause函数演示

通过对比可发现,使用pause函数时图形会间隔一段时间后更新,而使用time.sleep函数则不能正常显示。

使用pause函数

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)
data = np.random.random((50, 50, 50))

fig, ax = plt.subplots()

for i in range(len(data)):
    ax.cla()
    ax.imshow(data[i])
    ax.set_title("frame {}".format(i))
    plt.pause(0.1)

使用time.sleep函数

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

np.random.seed(19680801)
data = np.random.random((50, 50, 50))

fig, ax = plt.subplots()

for i in range(len(data)):
    ax.cla()
    ax.imshow(data[i])
    ax.set_title("frame {}".format(i))
    # Note that using time.sleep does *not* work here!
    plt.draw()
    plt.show(block=False)
    time.sleep(0.01)
    
本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值