質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

351閲覧

FuncAnimationで図示できなくて困っています。

syoshinnsya1

総合スコア2

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/07 11:02

前提・実現したいこと

おそらく、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だけを生成したところ)動き方がスムーズではないもののきちんと表示されました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ジェネレーターで渡さずに、N_cell,N_core,P_cell,P_coreをステップごとに辞書に格納して、辞書のkeyでfuncのフレームを回すことで解決しました!

投稿2020/06/07 16:13

syoshinnsya1

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問