我只是想在我的情节中加上一个暂停条款,我可以自愿暂停实时流。 这就是我想要的。这是一个经过编辑的代码。它制作了两个子图:散点图和饼图。我可以暂停散点图但是当我暂停饼图消失时。
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()
答案 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.animation
和scatter
图表。
pie