Es ist sicher möglich, ohne FuncAnimation
zu animieren. Der Zweck der "enivisioned Funktion" ist jedoch nicht wirklich klar. In einer Animation ist die Zeit die unabhängige Variable, d. H. Für jeden Zeitschritt erzeugen Sie einige neue Daten zum Plotten oder ähnlichem. Daher würde die Funktion t
als Eingabe nehmen und einige Daten zurückgeben.
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()
Auch ist es nicht klar, warum Sie FuncAnimation
vermeiden möchte. Die gleiche Animation kann wie oben mit FuncAnimation
wie folgt hergestellt werden:
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()
Es gibt nicht viel geändert, Sie haben die gleiche Anzahl von Zeilen, nichts wirklich peinlich, hier zu sehen.
Plus Sie haben alle Vorteile von FuncAnimation
, wenn die Animation komplexer wird, wenn Sie die Animation wiederholen möchten, wenn Sie Blitting verwenden möchten, oder wenn Sie es in eine Datei exportieren möchten.