Я пытаюсь поместить набор matplotlib.animation в функцию класса. Хотя мне кажется, что мне не очень повезло. Я пробовал оба, FunctionAnimation() & ArtistAnimation(). И для обоих я, похоже, не могу заставить их работать (хотя они сильно отличаются).Python Script для анимации набора строк в классе
# ------------------------------ #
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# ------------------------------ #
class AniPlot():
def __init__(self):
self.fig = plt.figure()
self.ax = plt.axes(xlim=(-3.5, 3.5), ylim=(-5, 2))
self.line, = self.ax.plot([], [], lw=2)
def set_data(self,tvector):
self.data = tvector
def ani_init(self):
self.line.set_data([], [])
def ani_update(i):
x = self.data[i][0]
y = self.data[i][1]
self.line.set_data(x, y)
return self.line,
def animate(self):
anim = animation.FuncAnimation(self.fig, self.ani_update, init_func=self.ani_init,
frames=4, interval=20, blit=True)
plt.show()
# ------------------------------ #
data = [
[[0,0,1,0],[0,-1,-2,-3]],
[[0,0,0,0.1],[0,-1,-3,-4]],
[[0,0,0.5,0],[0,-1,-2.5,-3.5]],
[[0,0,1,2],[0,-1,-2,-2.5]]
]
myani = AniPlot()
myani.set_data(data)
myani.animate()
Я хочу попытаться обвести вокруг себя, а не использовать чужой код. Хотя я использовал других в качестве отправной точки. Может ли кто-нибудь помочь?
Спасибо, Роберто, я оставил «я». хотя я все еще получаю ** «TypeError: объект« NoneType »не является итерируемым» **. Это может быть моя версия? – CromeX
Вы можете избежать ошибки, поставив blit = False (тогда мне нужно время, чтобы узнать, почему проблема возникает в первую очередь - или вам нужен более опытный пользователь для совета!). – Roberto
спасибо, Роберт, это работает. Я тоже новичок! – CromeX