在使用matplotlib画动图时,遇到一个问题。在交互式图中,窗口始终位于前面,就好像这样会使matplotlib绘图窗口弹出,因为活动窗口已成为默认行为。
该如何停用它?我不希望窗口每隔5秒就出现一次。
我希望它保留在我放置它的z顺序中,无论是在活动窗口的前面还是后面。
窗口不断弹出的原因来自于内部plt.pause调用plt.show()。因此,可定义pause无需调用即可实现自己的功能show。这需要首先处于交互模式plt.ion(),之后,可以使用自定义mypause功能更新绘图,如下所示。
mport matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
from time import time
from random import random
plt.ion()
# set up the figure
fig = plt.figure()
plt.xlabel('Time')
plt.ylabel('Value')
plt.show(block=False)
def mypause(interval):
backend = plt.rcParams['backend']
if backend in matplotlib.rcsetup.interactive_bk:
figManager = matplotlib._pylab_helpers.Gcf.get_active()
if figManager is not None:
canvas = figManager.canvas
if canvas.figure.stale:
canvas.draw()
canvas.start_event_loop(interval)
return
t0 = time()
t = []
y = []
while True:
t.append( time()-t0 )
y.append( random() )
plt.gca().clear()
plt.plot( t , y )
mypause(1)
import matplotlib
matplotlib.use("Qt4agg") # or "Qt5agg" depending on you version of Qt
参考[https://xbuba.com/questions/45729092]1
[1]:在每次更新时使交互式matplotlib窗口不会弹出到前面(Windows 7) https://xbuba.com/questions/45729092