点击暂停数据的实时情节

时间:2016-06-29 19:42:28

标签: python matplotlib graph pause

我只是想在我的情节中加上一个暂停条款,我可以自愿暂停实时流。 这就是我想要的。这是一个经过编辑的代码。它制作了两个子图:散点图和饼图。我可以暂停散点图但是当我暂停饼图消失时。

def onClick(event):
    global pause
    pause ^= True
fig = plt.figure()
fig.canvas.mpl_connect('button_press_event', onClick)
plt.show()

while t<ran2:       
      if not pause:
         ax = fig.add_subplot(2,1,1)
         ay = fig.add_subplot(2,1,2)
         mdfmt = md.DateFormatter('%H:%M')
         ax.xaxis.set_major_formatter(mdfmt)
         cmap=cm.jet
         g=s[t:t+4]
         h=[]
         for i in g:
             if i == 'Match':
                 h.append(1)
             else:
                 h.append(0)
         ax.scatter(x[t:t+4],y[t:t+4],c=h,s=150,marker='<',edgecolor='None', cmap = cm.jet)
         ax.set_xlabel('Time')
         ax.set_ylabel('Action')
         mindate = min(data_mat['Date'].ix[t:t+4])
         ax.set_title('Alarm System for site SPFD02 on date %s'%mindate)
         yt=[-1,0,1]
         ax.set_yticks(yt)
         ax.set_yticklabels(('Closed','Not Ack','Assigned'))
         ax.set_xlim(x[t],x[t+4])    

# for pie chart
         l = 'Match','No-Match'
         colors = ['red','blue']
         j = s[t:t+4].count('Match')
         z = z + j
         k = s[t:t+4].count('No-Match')
         r = r + k
         sizes = [z,r]
         ay.pie(sizes,labels = l, colors = colors, autopct='%1.1f%%', shadow=True, startangle=140)
         ay.set_aspect('equal')        
         t=t+1
   else:
        print 'paused'
plt.pause(0.1)
plt.cla() 

1 个答案:

答案 0 :(得分:0)

有更优雅的方法可以实现这一点(使用matplotlib.animation,请参阅此示例:https://stackoverflow.com/a/16733373/3581217回答),但在您提供的示例精神内,此功能有效:

import matplotlib.pylab as pl

pause = False

def onClick(event):
    global pause
    pause ^= True

fig = pl.figure()
fig.canvas.mpl_connect('button_press_event', onClick)

nt = 100
t = 0
while t < nt:
    if not pause:
        # do stuff
        print("update plot!")
        t += 1
    else:
        print("paused")
    pl.pause(0.1)

诀窍是让pause成为global变量(您在onClick函数中设置它,但也在循环内部设置......?),{{1} }函数在onClick之间切换(^=pause,并基于True/False的状态,你&#34;做东西&#34; 或不。

但同样,调查pause ......

可能更有意义

根据以下评论进行编辑 我不知道更新后的代码出错的地方;这个最小的示例可以毫无问题地更新matplotlib.animationscatter图表。

pie