目前有效
matplotlib
版本為:
3.4.1
。
pause
函數概述
pause
pause
函數功能運作GUI事件循環若幹秒。
pause
函數的簽名為
matplotlib.pyplot.pause(interval)
。參數
interval
表示秒數,類型為整數。
如果目前有活動的圖形,在
pause
函數運作前,圖形将會更新并顯示,在等待期間事件循環會一直運作,直到暫停時間
interval
秒後結束。
如果沒有目前有活動的圖形,将會調用
time.sleep
函數,休眠
interval
秒。
pause
函數原理
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
通過對比可發現,使用
pause
函數時圖形會間隔一段時間後更新,而使用
time.sleep
函數則不能正常顯示。
使用 pause
函數
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
函數
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)