2014-01-20 2 views
0

Я новичок в matplotlib. Я хочу обновить данные в бесконечном цикле while в другом потоке в дополнение к обновлению графика в методе pyplot.show. Я попытался использовать импорт резьбы, но он не работает хорошо вместе с pyplot.show метод. Я знаю, что могу использовать pyplot.ion, и он отлично работает с потоками. Проблема с pyplot.ion в том, что она не эффективна. Есть ли способ, которым я мог бы использовать pyplot.show вместо этого?matplotlib обновление данных в потоке

Чтобы сделать себе ясно, я не хочу, чтобы решение:

pyplot.ion() 
    .... 
    while True: 
    .... 
     pyplot.show() 

ответ

0

Я не уверен, если это решит вашу проблему, но вы можете попробовать использовать pyplot.draw() вместо pyplot.show(). Если вы уже использовали show() один раз, обновите его? draw() должен обновить сюжет.

Я не знаю, как вы создаете данные, но считая, что набор данных, который вы рисуете, имеет одинаковый размер каждый раз, когда один трюк, чтобы ускорить работу, заключается в использовании set_data(), если вы первый раз заговорили магазин-художник как

x, y = generate_data_function() 
line, = pyplot.plot(x, y) 
pyplot.show() 

while True: 
    x, y = generate_data_function() 
    line.set_data(x, y) 
    pyplot.draw() 

Надеюсь, это поможет! Как я уже сказал, я не совсем уверен, действительно ли это решает вашу проблему, но, по крайней мере, стоит попробовать.

+0

Гм, да, это работает, но я уже известно об этом решении «Я знаю, что я могу использовать pyplot.ion и она отлично работает с потоками». Но я использовал 'pyplot.ion' вместо' pyplot.show'. Я думаю, что «pyplot.show» не будет работать, поскольку он остановится на этой линии. – Py566

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