Я использую matplotlib для рисования диаграмм и графиков.
Когда я вывожу диаграмму на печать с помощью команды show()
мои блоки кода при этой команде.
Я хотел бы обновить свой список значений с новыми данными, и, чем обновление изображение на фоне. Как сделать это, не закрывая каждый раз окно с графиком? Ниже код, который я использую
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
В IPython, запущенном с -pylab
, он не должен блокироваться.
В противном случае:
С помощью ion ()
вы включаете интерактивный режим. show ()
больше не блокирует вашу систему
. Каждый draw ()
или plot (x, y)
обновляет ваш график.
ioff ()
отключает интерактивный режим. Полезно, если вы добавляете много данных и не
хотите обновлять каждую мелочь.
См. Также: http://www.scipy.org/Cookbook/Matplotlib/Animations
Если вы не используете оболочку IPython, а запускаете программу, вы, вероятно, хотите сделать:
pyplot.draw()
после plot()
, возможно, с последующим
raw_input("Press enter when done...")
чтобы подождать пользователя, прежде чем выводить что-то еще.
Если вы делаете pyplot.ion()
в начале вашей программы, выполнение draw()
часто можно даже пропустить.
pyplot.show()
- это фактически бесконечный цикл, который обрабатывает события в главном окне черчения (такие как масштабирование, панорамирование и т.д.).
Это работает путем вызова Ipython с параметром -wthread
(или -pylab
). Он больше не будет блокироваться на , покажите
.