Я пытаюсь заставить 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(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()
Попробуйте
label = plt.text(-180, 50, str(Frame_number[0]), fontsize = 8, ha = 'center')иlabel.set_text(str(Frame_number[i+1])).