Интерактивный режим в matplotlib

Я хочу динамично обновить диаграмму рассеяния на основе данных оси y, полученных от сокетного соединения. Я использовал Python matplot lib в интерактивном режиме, чтобы сделать это, но во время динамического updation, если я перемещаю окно в другое местоположение или минимизирую окно затем график updation остановки резко. Как сделать это?

Я присоединил демонстрационный динамический код updation, используемый здесь, и та же проблема появляется здесь также.

import matplotlib.pyplot as plt
import random
import time
items = [25.5,26.7,23.4,22.5,20,13.4,15.6,-12,-16,20]
x = [1,2,3,4,5,6,7,8,9,10]

plt.ion() #  Interactive on

for i in range(1,100):
    plt.title('graph plotting')
    plt.ylabel('temperature') 
    plt.xlabel('time')
    random.shuffle(items)
    plt.plot(x,items,'ob-')
    plt.axis([0, 10, -40, 40])
    plt.draw()
    #time.sleep(2)
    plt.clf()
    plt.close()
7
задан Cœur 11 September 2017 в 16:33
поделиться

2 ответа

For this to work, you need to have a main loop for event handling, and your own event handler to redraw the plot when the window is resized or refreshed.

You'll find many examples for this on the web, or in the tutorials.

I think this is best handled by using a UI toolkit (e.g. wxPython), not using matplotlib interactive mode. I had a similar question in the past and got some good answers.

1
ответ дан 7 December 2019 в 14:33
поделиться

Эта страница содержит несколько примеров динамических графиков с matplotlib и wxPython. И здесь - версия с PyQt.

3
ответ дан 7 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

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