当前有效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)
本文详细介绍了matplotlib库中pause函数的功能与实现原理。该函数可在绘制过程中暂停指定时间,保持图形更新的同时允许事件循环继续运行。适用于动态图表的实时展示。
1408

被折叠的 条评论
为什么被折叠?



