Я новичок в анимации с Matplotlib и с небольшими проблемами. Я хотел бы создать анимацию позиций частиц, и я хотел бы отобразить номер кадра на каждом шаге. Я создал образцы данных в начале моего фрагмента кода, поэтому код является автономным (обычно мои данные считываются из csv).matplotlib анимация, текст не обновляется
Проблема: отображаемый график полностью пуст. Однако, если я закомментирую возврат time_text (т. Е. Измените «return patches, time_text» на «return patches»), все будет работать нормально. Я предполагаю, что проблема заключается в том, как я обновляю time_text, но я зациклился на том, как это исправить.
from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
import pandas as pd
box_size = 50
radius = 1
df =pd.DataFrame(np.array([np.arange(50),np.arange(50),np.arange(50)]).T,
columns = ['x','y','frame'])
#set up the figure
fig = plt.figure()
plt.axis([0,box_size,0,box_size])
ax = plt.gca()
ax.set_aspect(1)
time_text = ax.text(5, 5,'')
#initialization of animation, plot empty array of patches
def init():
time_text.set_text('initial')
return []
def animate(i):
patches = []
#data for this frame only
data = df[df.frame == i]
time_text.set_text('frame'+str(i))
#plot circles at particle positions
for idx,row in data.iterrows():
patches.append(ax.add_patch(plt.Circle((row.x,row.y),radius,color= 'b',
alpha = 0.5)))
return patches, time_text
anim = animation.FuncAnimation(fig, animate, init_func=init, repeat = False,
frames=int(df.frame.max()), interval=50,
blit=True)
Возможно [этот вопрос] (https://stackoverflow.com/questions/44594887/how-to-update-plot-title-with-matplotlib-using-animation) может помочь. – ImportanceOfBeingErnest