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

Сделать анимацию в Matplotlib

12.05.2016, 15:57. Показов 2955. Ответов 3

Студворк — интернет-сервис помощи студентам
Помогите.Новичок в python. Мне нужно считать данные акселерометра и построить график изменения величины.но у меня перестают приходить данные когда вызывается функция show().
и как сделать ax, ay, az глобальными переменными. TypeError: 'float' object is not iterable

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
import lightblue
import matplotlib.pyplot as plt
import matplotlib.animation as animation
 
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
 
ax, ay, az = 0.0
 
 
def animate(i):
    xs = []
    ys = []
    xs.append(ax)
    ys.append(ay)
    ax1.clear()
    ax1.plot(xs, ys)
 
 
def main():
    sock = lightblue.socket()
    sock.bind(("", 0))
    sock.listen(1)
    lightblue.advertise("EchoService", sock, lightblue.RFCOMM)
    print "Advertised and listening on channel %d..." % sock.getsockname()[1]
    conn, addr = sock.accept()
    print "Connected by", addr
    while True:
        line = conn.recv(1024)
        angles = line.split(", ")
        if len(angles) == 3:
            ax = float(angles[0])
            ay = float(angles[1])
            az = float(angles[2])
            print ("ax : " + str(ax))
            print ("ay : " + str(ay))
            print ("az : " + str(az))
            ani = animation.FuncAnimation(fig, animate)
            plt.show()
main()
Добавлено через 13 минут
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
import lightblue
import matplotlib.pyplot as plt
import matplotlib.animation as animation
 
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
bool check = True
 
def animate(i):
    if True :
        sock = lightblue.socket()
        sock.bind(("", 0))
        sock.listen(1)
        lightblue.advertise("EchoService", sock, lightblue.RFCOMM)
        print "Advertised and listening on channel %d..." % sock.getsockname()[1]
        conn, addr = sock.accept()
        print "Connected by", addr
        check = False
 
    line = conn.recv(1024)
    angles = line.split(", ")
    if len(angles) == 3:
            ax = float(angles[0])
            ay = float(angles[1])
            az = float(angles[2])
            print ("ax : " + str(ax))
            print ("ay : " + str(ay))
            print ("az : " + str(az))
    xs = []
    ys = []
    xs.append(ax)
    ys.append(ay)
    ax1.clear()
    ax1.plot(xs, ys)
 
ani = animation.FuncAnimation(fig, animate)
plt.show()
Вот так вроде должно работать, но опять же проблема с объявлением глобальной переменной bool check.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2016, 15:57
Ответы с готовыми решениями:

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

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

Matplotlib возможно ли сделать виджет регулирующий масштаб по горизонтали с авто масштабированием по вертикали
Мне нужно регулировать ползунком масштаб графика по горизонтали и чтобы он при ручной прокрутке подстраивался по высоте(не было пустого...

3
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.05.2016, 16:03
Цитата Сообщение от victim_666 Посмотреть сообщение
TypeError: 'float' object is not iterable
Пропринтуй, что лежит в angles, судя по ошибке там число, а не список, кортеж и т д
Цитата Сообщение от victim_666 Посмотреть сообщение
как сделать ax, ay, az глобальными переменными
А зачем!? Просто берешь и передаешь данные, как аргумент в нужную функцию и все.
0
0 / 0 / 1
Регистрация: 16.11.2012
Сообщений: 36
12.05.2016, 16:06  [ТС]
TypeError: 'float' object is not iterable в строке ax, ay, az = 0.0 или bool check = True во втором примере.
а в FuncAnimation(fig, animate) я не могу передать значения, потому что это стандратная функция со своими параметрами.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.05.2016, 22:49
Цитата Сообщение от victim_666 Посмотреть сообщение
TypeError: 'float' object is not iterable
Я опять повторяю, эта ошибка потому, что в angles лежит не список или любой итерируемый объект, а число и по этому интерпретатор ругается.
Цитата Сообщение от victim_666 Посмотреть сообщение
а в FuncAnimation(fig, animate) я не могу передать значения, потому что это стандратная функция со своими параметрами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2016, 22:49
Помогаю со студенческими работами здесь

Сделать анимацию анимацию-движение картинка
Сделать анимацию анимацию-движение картинка, которая убегает от курсора мышки. Анимацию сделать с учетом законов механики (т.е. в начале...

Matplotlib как сделать 2ой ряд label для графиков seaborn
Здравствуйте.Подскажите,как сделать 2ой ряд label для графиков seaborn для оси x?

Сделать анимацию
Здравствуйте! Помогите пожалуйста, сверстать анимацию и блоки как и на этом сайте. Буду вам очень благодарен ...

Сделать анимацию
Всем доброго времени суток. Нужно сделать подобную анимацию. https://**********/a/twHFA Можете посоветовать ресурс, где можно найти? ...

Сделать анимацию
Создать анимацию в паскале, земля вертится вокруг солнца


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru