Ошибка с анимацией строки - matplotlib

Я пытаюсь заставить animation работать в matplotlib. У меня этот code работал раньше, но теперь я возвращаю ошибку. Я не уверен, обновление вызвало это или нет?

code ниже. Это работало раньше. но теперь он возвращает ошибку:

    raise TypeError("invalid type comparison")

TypeError: invalid type comparison

Пример:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import pandas as pd

d = ({
    'Time' : [1,2,3,4,5,6,7,8,9,10],                                     
     })

df = pd.DataFrame(data = d)


fig, ax = plt.subplots(figsize = (10,6))

#Event Table
Events_table = plt.table(cellText= [[''],[''],[''],[''],['']],
    colWidths = [1],
    rowLabels=['Time','1','2','3','4'],
    colLabels=['Events'],
    bbox = [0.124, 0.75, 0.236, 0.22])

Frame_number = df['Time']

label = plt.text(-180, 50, Frame_number, fontsize = 8, ha = 'center')

def animate(i) :
    label.set_text(Frame_number[i+1])

ani = animation.FuncAnimation(fig, animate, np.arange(0,10),# init_func = init,
                          interval = 100, blit = False)

plt.draw()

Попробуйте label = plt.text(-180, 50, str(Frame_number[0]), fontsize = 8, ha = 'center') и label.set_text(str(Frame_number[i+1])).

Thomas Kühn 21.01.2019 08:53

Спасибо @Томас Кун

user9639519 22.01.2019 00:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я сомневаюсь, что этот код когда-либо работал бы в предыдущих версиях; в любом случае есть две проблемы:

  • Я думаю, вы захотите установить метку для элемента серии первый до того, как начнется анимация.

    label = plt.text(0, 0, Frame_number[0])
    
  • Если вы используете i+1 для индексации серии, ваша анимация должна останавливаться на один индекс перед последним,

    ani = animation.FuncAnimation(..., frames=np.arange(0, len(Frame_number)-1) )
    

Полный код:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import pandas as pd

df = pd.DataFrame(data = { 'Time' : [1,2,3,4,5,6,7,8,9,10],  })

fig, ax = plt.subplots(figsize = (10,6))

Frame_number = df['Time']

label = plt.text(0, 0, Frame_number[0])

def animate(i) :
    label.set_text(Frame_number[i+1])

ani = animation.FuncAnimation(fig, animate, np.arange(0,len(Frame_number)-1),
                          interval = 100, blit = False)

plt.show()

Другие вопросы по теме