2016-03-16 70 views
0

我有一个程序创建一个交互式matplotlib(well,pylab)figure,然后等待raw_input,同时让用户操纵plot以手动查找最佳数据。交互式Matplotlib窗口不更新

import pylab as p 
p.ion() 
p.figure(1) 
p.plot(x,y,'.') 
cen=float(raw_input('Type centre:')) 
dur=float(raw_input('Type duration:')) 
depth=float(raw_input('Type depth:')) 

如果我在linux(matplotlib 1.4.3)上运行这个,它按预期工作。在我的Mac(matplotlib 1.5.0)上运行这个功能会冻结第一次绘制的pylab窗口,并且不会让交互功能正常工作。然而,在输入了raw_input之后,它会绘制所有前面的交互式点击。有任何想法吗?

+0

加上'''plt.pause(0.0001)''' 看到这个线程:HTTP://计算器.com/questions/12670101/matplotlib-ion-function-fails-to-interactive – Bernuly

回答

2

ion()和raw_input()不能很好地协同工作。这是一个已知的问题。在交互模式下,pyplot.ion()使用事件处理程序来等待按键。当raw_input接管输入时这会中断。

您可以通过添加平局()或显示()是一个好一点:

import pylab as p 
p.ion() 
p.figure(1) 
p.plot(x,y,'.') 
p.show() 
cen=float(raw_input('Type centre:')) 
dur=float(raw_input('Type duration:')) 
depth=float(raw_input('Type depth:')) 
+0

这似乎不能解决问题,不幸的是。 – HPOsborn