Обязательно анимировать без FuncAnimation
. Однако цель «eniviseded function» не совсем ясна. В анимации время является независимой переменной, то есть для каждого временного шага вы создаете некоторые новые данные для построения или аналогичные. Поэтому в качестве входа функция примет t
и вернет некоторые данные.
import matplotlib.pyplot as plt
import numpy as np
def f(t):
x=np.random.rand(1)
y=np.random.rand(1)
return x,y
fig, ax = plt.subplots()
ax.set_xlim(0,1)
ax.set_ylim(0,1)
for t in range(100):
x,y = f(t)
# optionally clear axes and reset limits
#plt.gca().cla()
#ax.set_xlim(0,1)
#ax.set_ylim(0,1)
ax.plot(x, y, marker="s")
ax.set_title(str(t))
fig.canvas.draw()
plt.pause(0.1)
plt.show()
Кроме того, не понятно, почему вы хотели бы избежать FuncAnimation
. Же анимация, как описано выше, может быть получена с FuncAnimation
следующим образом:
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
def f(t):
x=np.random.rand(1)
y=np.random.rand(1)
return x,y
fig, ax = plt.subplots()
ax.set_xlim(0,1)
ax.set_ylim(0,1)
def update(t):
x,y = f(t)
# optionally clear axes and reset limits
#plt.gca().cla()
#ax.set_xlim(0,1)
#ax.set_ylim(0,1)
ax.plot(x, y, marker="s")
ax.set_title(str(t))
ani = matplotlib.animation.FuncAnimation(fig, update, frames=100)
plt.show()
Там значительно не изменился, то есть такое же количество строк, ничего на самом деле неудобно посмотреть здесь.
Кроме того, у вас есть все преимущества от FuncAnimation
, когда анимация становится более сложной, когда вы хотите повторить анимацию, когда хотите использовать blitting, или когда вы хотите экспортировать его в файл.