MatplotlibアニメーションがIPython Notebookで動かない?FuncAnimationを使った作図アニメーションの実装方法
Matplotlibでプロットをアニメーション化する手順
Matplotlibでグラフをアニメーション表示するには、以下の手順に従います。
figureサイズの設定とパディング調整:図のサイズを指定し、サブプロット間および周囲の余白(パディング)を調整します。
ランダムデータの生成:NumPyを使って、10×10×8の形状を持つランダムなデータを作成します。
図とサブプロットの作成:
subplots()メソッドを使用して、figureオブジェクトとAxes(サブプロット)を生成します。アニメーションの作成:
FuncAnimation()クラスを使い、関数funcを繰り返し呼び出すことでアニメーションを構築します。等高線値の更新:フレームごとにコンター(等高線塗りつぶし)の値を更新するため、
FuncAnimation()クラス内で利用できるanimateメソッドを定義します。図の表示:
show()メソッドを呼び出して、アニメーション付きの図を画面に表示します。
コード例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = np.random.randn(800).reshape(10, 10, 8)
fig, ax = plt.subplots()
def animate(i):
ax.clear()
ax.contourf(data[:, :, i])
ani = animation.FuncAnimation(fig, animate, 5, interval=50, blit=False)
plt.show()
IPython Notebook / Jupyter Notebookで動かない場合の対処法
上記のコードがIPython NotebookやJupyter Notebook上で正しく動作しない場合は、ノートブック環境向けのマジックコマンドを追加すると解決することがあります。コードの先頭に以下のいずれかを記述してください。
%matplotlib notebook # または %matplotlib inline
%matplotlib notebookはインタラクティブな描画を有効化し、アニメーションをそのまま再生できます。一方、%matplotlib inlineの場合は静的な画像として出力されるため、アニメーションをHTMLとして埋め込むにはmatplotlib.animation.HTML()やto_jshtml()を併用する方法が有効です。
from IPython.display import HTML HTML(ani.to_jshtml())
出力結果

このように、ランダムデータの各スライスが順番にコンター図として描画され、滑らかなアニメーションとして表示されます。interval=50はフレーム間隔(ミリ秒)を表しており、数値を小さくするとより速くアニメーションが再生されます。
-
Matplotlibで図のサブプロットにA、B、Cのラベルを付ける方法
MatplotlibでサブプロットにA、B、Cの注釈を付ける Matplotlibを使用して、図内の各サブプロットに「A」「B」「C」といった注釈(パネルラベル)を付ける方法を解説します。論文やレポートで複数のグラフ・画像を並べて提示する際に非常に便利なテクニックです。 実装手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 nrows=1、ncols=3 を指定して、図とサブプロットのセットを作成します。 配列から1次元イテレータを作成します。 各Axesを反復処理し、データを画像として表示します。 同じループの中で、テキスト「A」「B」「C」を自動的に
-
MatplotlibでiPythonノートブックの図をファイルとして保存する方法
iPythonノートブック上で作成した図(グラフ)を画像ファイルとして保存したい場合、Matplotlibの機能を使えば簡単に実現できます。ここでは、基本的な手順とサンプルコードを紹介します。 図をファイルに保存する手順 iPythonから図をファイルとして保存するには、以下の手順を実行します。 plt.figure() で新しい図を作成するか、既存の図をアクティブにします。 add_axes() メソッドを使って、図に axes(座標軸)を追加します。 プロットしたいデータ(リストなど)を plot() で描画します。 savefig() メソッドを使って、図をファイルとして保存します。