天天看點

matplotlib之pyplot子產品——暫停(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)
    
           

繼續閱讀