前提・実現したいこと
おそらく、matplotlib.animationの基本的な質問です。
pythonで拡散律速凝縮の数値シミュレーションをするためのコードを自作しているのですが、数値計算の結果をanimationで図示することができません。
各イリテーションごとにグラフを返す二つの配列を生むジェネレーターを指定する方法を目指しています。
発生している問題・エラーメッセージ
missing 1 required positional argument: 'P_core'
該当のソースコード
全体のコードが長いので、グラフの描写に大きくかかわる部分だけ表示しています。
ちなみに、N_cell,N_core,P_cell,P_coreはステップごとに変化しています。
P_cellはブラウン運動をしていて毎ステップごとに変化しています。
python
1"""メイン部分計算関数""" 2def process(P_cell,P_core,N_core,N_cell): 3 for n in range(0,total_steps): 4 P_cell = move(P_cell,N_cell) 5 P_cell,P_core,N_core,N_cell = detection(P_cell,P_core,N_core,N_cell) 6 yield P_cell,P_core 7 8 9"""描写する関数""" 10def plot(P_cell,P_core): 11 ax.cla() 12 ax.set_xlim((-20, 20)) 13 ax.set_ylim((-20, 20)) 14 ax.set_aspect("equal") 15 plt.grid() 16 for i in range (0,N_cell): 17 a = patches.Circle(xy = (P_cell[0,i],P_cell[1,i]),radius =0.5,color = "y") 18 ax.add_patch(a) 19 for i in range (0,N_core): 20 b = patches.Circle(xy = (P_core[0,i],P_core[1,i]),radius =0.5,color = "b") 21 ax.add_patch(b) 22 23 24"""基本部分""" 25total_steps = 100 26#初期値 27N_cell = 10 28N_core = 1 29r = 1 #1stepでランダムウォークする距離 30R = 1 #核に取り込まれる距離 31P_cell = 20 * np.random.rand(2,N_cell) - 10*np.ones((2,N_cell)) #-10から10までの乱数配列を作成 32P_core = np.zeros((2,N_core)) 33# print(distance(P_cell,P_core,N_core,N_cell)) 34fig,ax = plt.subplots(figsize =(10,7)) 35 36 37anim = animation.FuncAnimation(fig, plot, frames=process(P_cell,P_core,N_core,N_cell),save_count=10)
試したこと
①グラフ描写以外の部分に問題があるかどうか数値計算の結果を見たところ、問題はなさそうでした。
②返される結果のうち片方だけを表示しようとしたところ(ジェネレーターでC_cellだけを生成したところ)動き方がスムーズではないもののきちんと表示されました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。