私は多くのタイムステップで何かをシミュレートしていますが、多くのステップが必要です。私は結果をアニメーション化し、nごとに1つのステップしかプロットしません。matplotlibはアニメーションのnステップごとに保存します
今私は2つの非機能的な命題を持っています。最初のものは正しくループしていないように見えますが、2番目の方法では、図の更新されていない手順でビデオが埋められ、ファイルが大きくなり、遅くなります。
あなたは私を助けることができますか?
おかげ
X, Y = np.meshgrid(256,256)
fig,ax = plt.subplots()
plot_every = 50
saved_steps = []
def make_step(s, t):
c = ...
if (s%plot_every) == 0:
print("plotting step {:.0f} , t ={:.0f} ".format(s, t*dt))
ax.clear()
ax.contourf(X, Y, c,
np.arange(0, 1.0, 0.01),
extend='both')
saved_steps.append(ax)
for s , t in enumerate(range(t_steps)):
make_step(s,t)
print("will now save anim")
def plot_ani(i):
return saved_steps[i]
anim = animation.FuncAnimation(fig, plot_ani,range(len(saved_steps)) , interval=500, blit=False)
か:
fig,ax = plt.subplots()
saved_steps = []
def make_step(s, t):
if (s%plot_every) == 0:
print("plotting step {:.0f} , t ={:.0f} ".format(s, t*dt))
ax.clear()
ax.contourf(X, Y, c,
np.arange(0, 1.0, 0.01),
extend='both')
return ax
anim = animation.FuncAnimation(fig, make_step,range(len(saved_steps)) , interval=500, blit=False)
、その後、私はあなたの最初のアプローチの問題は、あなたがリストにmatplotlibのaxes
オブジェクトを格納しようとしていることである
anim.save('spinodal_decompo_ex.ogv', codec='libtheora')
matplotlibオブジェクトを保存すると、多くの不必要なオーバーヘッドが発生します。分離原則に従うことでこれを排除することができます。しかし、これはもちろんあなた自身の選択です。 – ImportanceOfBeingErnest