Интерактивный режим в matplotlib - PullRequest
7 голосов
/ 21 декабря 2009

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

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

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()

Ответы [ 2 ]

3 голосов
/ 21 декабря 2009

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

1 голос
/ 21 декабря 2009

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

Вы найдете много примеров для этого в Интернете или в учебных пособиях.

Я думаю, что лучше всего это сделать с помощью инструментария пользовательского интерфейса (например, wxPython ), не используя интерактивный режим matplotlib. У меня был похожий вопрос в прошлом, и я получил несколько хороших ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...