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

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

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

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

Python

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

Q&A

解決済

1回答

604閲覧

保存したgifでグラフが描画されていない

miyavi-177

総合スコア2

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2023/02/11 03:49

実現したいこと

グラフの時間変化のアニメーションを作りたい。

前提

VScode上のpythonで、FuncAnimationを使ってアニメーションを作ろうとしています。

発生している問題・エラーメッセージ

グラフ更新用関数にグラフでプロットしてほしいデータがきちんと渡せない。ご教授お願い致します。

### 該当のソースコード ```python ソースコード def animate2(i): #IR用グラフ更新関数 line.set_data(i/20, g_IR[i]) frame=f"{i/20:.2f}" ax2.set_title('t= '+str(frame)) return line g_IR=np.linspace(0, 5000) root = tk.Tk()#ウインドの作成 root.geometry("1000x1000") #ウインドの大きさ fig = plt.figure() #描画の用意 ax2 = fig.add_subplot(111) ax2.set_position([0.2, 0.2, 0.5, 0.6]) ax2.set_yticks([0, 5, 10, 15, 20, 25]) ax2.set_yticklabels(['0', '5', '10', '15', '20', '25']) ax2.set_xlabel(r"$t$")#x軸のラベル ax2.set_ylabel(r"Inertial radius $R$")#y軸のラベル g_IR_x = np.arange(len(g_IR)) line = ax2.plot(g_IR_x[:], g_IR[:]) #tkinterのウインド上部にグラフを表示する canvas = FigureCanvasTkAgg(fig, master=root) movie= ani.FuncAnimation(fig, animate2, interval=0.5,frames=np.arange(0, 5000, 20))#frames=ani_step canvas.get_tk_widget().pack(side=tk.TOP, expand=1) movie.save(f"ani.gif",writer='pillow') ### 試したこと 色々なサイトを調べましたが、自分ではわかりませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

※ 以下、アニメーションをGIF形式のファイルに保存するだけのものです

python

1import numpy as np 2import matplotlib.animation as ani 3from matplotlib import pyplot as plt 4 5def animate2(i): #IR用グラフ更新関数 6 ax2.plot(g_IR_x[:i], g_IR[:i], 'b') 7 ax2.set_title(f't= {i*tick:.2f}') 8 9N, tick = 5000, 20 10g_IR_x = np.arange(0, N, tick) 11g_IR = g_IR_x 12fig = plt.figure() #描画の用意 13ax2 = fig.add_subplot(111) 14ax2.set_xlabel(r"$t$")#x軸のラベル 15ax2.set_ylabel(r"Inertial radius $R$")#y軸のラベル 16ax2.set_xlim(0, N) 17ax2.set_ylim(0, N) 18 19#tkinterのウインド上部にグラフを表示する 20movie = ani.FuncAnimation(fig, animate2, interval=0.5,frames=range(len(g_IR_x))) #frames=ani_step 21movie.save(f"ani.gif",writer='pillow')

イメージ説明

投稿2023/02/11 04:50

編集2023/02/11 05:15
melian

総合スコア19701

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

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

miyavi-177

2023/02/11 05:47

ご回答いただきまして誠にありがとうございます!! グラフ更新用関数で直接plotするのが正しかったのですね。 半日以上悩んでいたので本当に救われました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問