進化するシステムを研究しています。状態はリストのリストにフロートとして記録されています。各矩形は数字を表します。さまざまな範囲内の数値は、レベルマップのように異なる色で描画されます。私は、システムの進化を通じて多くのショットを肖像画にしたいと思います。Python:ビデオとして出力されるレイヤーカラーの進化システム
ここでは簡単な例を示します。 move_one_step
が呼び出されると、リストのリスト内の各エントリが均一にランダムなウォークに追加されます。難しいのは、Figureオブジェクトを更新して、move_one_step
を正しい方法で呼び出していることです。
#!/usr/bin/env python3
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
def move_one_step(list_in):
hold_list =list_in
for i in list(range(LEN_BLOCK)):
for j in list(range(LEN_BLOCK)):
list_in[i][j] +=np.random.uniform(0,VMAX) # Uniform within 0 and `VMAX`.
return hold_list
LEN_BLOCK =10
MAX_NUM_STEP =10
VMAX =4
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
list_sys =[ [0]*LEN_BLOCK for _ in list(range(LEN_BLOCK)) ]
hold_axes =plt.pcolormesh(list_sys, vmin=0, vmax=VMAX)
plt.colorbar()
fig =hold_axes.get_figure()
out_video_path ="./evolution.mp4"
DPI =100 # Dots per inch.
FPS =5 # `fps`: frame rate
writer =animation.FFMpegWriter(fps=FPS)
with writer.saving(fig, out_video_path, DPI):
for i in range(MAX_NUM_STEP):
list_sys =move_one_step(list_sys)
hold_axes.set_array(list_sys)
writer.grab_frame()
解釈は失敗し、エラーメッセージが、ここに抜粋され、
Traceback (most recent call last):
File "./animation.py", line 42, in <module>
writer.grab_frame()
File "/usr/local/lib/python3.6/site-packages/matplotlib/animation.py", line 328, in grab_frame
dpi=self.dpi, **savefig_kwargs)
File "/usr/local/lib/python3.6/site-packages/matplotlib/figure.py", line 1573, in savefig
...
[I omitted the rest]
...
AttributeError: 'list' object has no attribute 'ndim'
エラーが明らかにされていません。私は、軸と図形オブジェクトの種類に対応することができなかったと信じていますが、私はそれらについての理解がよくありません。
私のアイデアの主なソース:2D grid data visualization in Python; Animation example code
は、あなたが「エラーが明らかにされていません」という権利です