Существует ли способ отсоединить графики matplotlib так, чтобы вычисление могло продолжиться?

241
задан Anton Protopopov 26 December 2015 в 20:50
поделиться

4 ответа

Используйте matplotlib вызовы, которые не заблокируются:

Используя draw():

from matplotlib.pyplot import plot, draw, show
plot([1,2,3])
draw()
print 'continue computation'

# at the end call show to ensure window won't close.
show()

Используя интерактивный режим:

from matplotlib.pyplot import plot, ion, show
ion() # enables interactive mode
plot([1,2,3]) # result shows immediatelly (implicit draw())

print 'continue computation'

# at the end call show to ensure window won't close.
show()
204
ответ дан Azrael 23 November 2019 в 03:15
поделиться

В моем случае я хотел иметь несколько всплывающих окон окон, поскольку они вычисляются. Для ссылки это - путь:

from matplotlib.pyplot import draw, figure, show
f1, f2 = figure(), figure()
af1 = f1.add_subplot(111)
af2 = f2.add_subplot(111)
af1.plot([1,2,3])
af2.plot([6,5,4])
draw() 
print 'continuing computation'
show()

пз. Довольно полезное руководство по интерфейсу OO matplotlib .

8
ответ дан Rufflewind 23 November 2019 в 03:15
поделиться

Можно хотеть прочитать этот документ в matplotlib документация, названная:

Используя matplotlib в оболочке Python

10
ответ дан nosklo 23 November 2019 в 03:15
поделиться

Лучше всегда согласовать с библиотекой, которой Вы пользуетесь, если это поддерживает использование в неблокирование путь.

, Но если Вы хотите более универсальное решение, или если нет никакого другого пути, можно выполнить что-либо, что блоки в разделенном процессе при помощи multprocessing модуль включал в Python. Вычисление продолжится:

from multiprocessing import Process
from matplotlib.pyplot import plot, show

def plot_graph(*args):
    for data in args:
        plot(data)
    show()

p = Process(target=plot_graph, args=([1, 2, 3],))
p.start()

print 'yay'
print 'computation continues...'
print 'that rocks.'

print 'Now lets wait for the graph be closed to continue...:'
p.join()

, Который имеет издержки запуска нового процесса и иногда более тверд отладить на сложных сценариях, таким образом, я предпочел бы другое решение (использующий matplotlib неблокирующиеся вызовы API )

29
ответ дан Community 23 November 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: