Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 18

Matplotlib анимация

18.12.2012, 06:20. Показов 2325. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы такова:
Есть гуй, который должен рисовать графики к куче постоянно обновляющихся величин. Гуй делается с помощью Qt, графики пытаюсь сделать на матплотлибе. Включение отображения графика по нажатию галочки соответствующей. Есть класс, которые все это отрисовывает. Вот необходимый кусок класса:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        #инициализация плот-объекта (из примером, как я понял - делается именно так)
        self.__plot = plt.figure()
        ax = self.__plot.add_subplot(111)
        #контейнер для точек графика
        self.__lines = [ax.plot([], [], 'b-')]
 
        #контейнер для названий включенных переменных и их значений на всем промежутке времени
        self.__graphics = []
        #logDict хранит собственно все значения переменных, при обновлении посылает сигнал с временем обновления
        #и обновленными переменными
        self.connect(logDict, QtCore.SIGNAL("changeValue(PyQt_PyObject, QString)"), self.updating)
 
    def printing(self, num):
        #функция и код в целом упрощен до отрисовки только одной прямой
        line = self.__graphics[0][1]
 
        #вот здесь выдаст ошибку
        self.__lines.set_data(line)
 
        return self.__lines
 
    def checkOn(self, varName):
        varName = str(varName)
        self.__graphics.append([varName, list()])
        #временная переменная для хранения всех значений одного графика
        lineContainer = self.__graphics[-1][1]
        #извлечение из словаря всех значений измеряемой величины
        for timing in logDict.time:
            val = logDict[timing][varName]
            lineContainer.append(val)
        ani = animation.FuncAnimation(self.__plot, self.printing, 1, interval = 3, blit = False)
 
    def updating(self, dictWithVals, time):
        if self.__graphics is None:
            #если ни одно значение не выбрано для отрисовки - функция нечего не выполнит
            return 0
        #добавление новых значений в контейнер
        for item in self.__graphics:
            varName = item[0]
            item[1].append(dictWithVals[varName])
Код соответственно нерабочий. Выдает ошибку о том, что self.__lines является списком и не имеет метода set_data. Вот лог:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Traceback (most recent call last):
  File "D:/infa/projects/MpptMonitoring/monitoringGraph.py", line 227, in checkOn
    ani = animation.FuncAnimation(self.__plot, self.printing, 2, interval = 3, blit = False)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 904, in __init__
    TimedAnimation.__init__(self, fig, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 761, in __init__
    *args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 480, in __init__
    self._init_draw()
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 929, in _init_draw
    self._draw_frame(next(self.new_frame_seq()))
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 943, in _draw_frame
    self._drawn_artists = self._func(framedata, *self._args)
  File "D:/infa/projects/MpptMonitoring/monitoringGraph.py", line 217, in printing
    self.__lines.set_data(line)
AttributeError: 'list' object has no attribute 'set_data'
Это была первая проблема. Вторая в том, что если я пытаюсь заменить self.__lines = [ax.plot([], [], 'b-')] на lines = [ax.plot([], [], [], 'b-')[0] for i in range(num)] (или без [0], который я так и не понял к чему там) - то выдает ошибку о том, что слишком много значений для распаковки. Последняя идея взята отсюда http://src.lgg.ru/2011/12/matplotlib-animation/
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2012, 06:20
Ответы с готовыми решениями:

Анимация в matplotlib
Доброго времени суток. Имеется код, прорисовывающий окружность и линию: import matplotlib import pylab R=5 def...

Не создаётся анимация в Matplotlib.animation
Здравствуйте, проблема такая, нужно сделать анимацию: 4 графика: 2 colomaps и 2 plots. Данные берутся из файлов, вот код: ...

Ускорение обновления графика matplotlib с использованием matplotlib.animation
Всем добрый день. Я пытаюсь оптимизировать вывод графиков matplotlib в режиме реального времени. Пробовал реализовать через plt.plot и...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2012, 06:20
Помогаю со студенческими работами здесь

matplotlib.pyplot работает, а matplotlib нет
Не могу понять. Почему import matplotlib.pyplot as plt x = plt.plot(x) plt.show() спокойно выдает график, а import...

Matplotlib
Пробую научиться пользоваться данной библиотекой для построения графиков, пытаюсь сделать простенький пример: import matplotlib.pyplot as...

Matplotlib

Подскажите по Matplotlib
Подскажите,можно ли сделать "склейку" png-изображений в gif-анимацию с помощью Matplotlib?(не графики,а просто изображения)

Matplotlib python 3.5
Установил matplotlib win 64 для python 3.5 при наборе простого кода: import matplotlib.pyplot as plt plt.plot() plt.ylabel('some...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru