2016-03-16 3 views
0

У меня есть программа, которая создает интерактивную фигуру matplotlib (ну, pylab), а затем ждет raw_input, позволяя пользователю манипулировать графикой, чтобы вручную находить лучшие данные.Окно интерактивного 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: // StackOverflow .com/questions/12670101/matplotlib-ion-function-fail-to-be-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

Смежные вопросы