Matplotlibでアニメーションを使ってプロットのタイトルを動的に更新する方法
Matplotlibでは、animationモジュールのFuncAnimationクラスを利用することで、関数を繰り返し呼び出しながらグラフやタイトルのテキストを動的に更新できます。この記事では、アニメーションでプロットのタイトルを更新する具体的な手順とサンプルコードを紹介します。
実装の手順
- figure.figsize や figure.autolayout を設定し、図のサイズとサブプロット間・周囲の余白を調整します。
- figure() メソッドで新しい図を作成(または既存の図をアクティブ化)します。
- numpy を使って x と y のデータ点を生成します。
- gca() で現在の軸(Axes)を取得します。
- text() メソッドで軸にタイトル用のテキストを追加します。
- フレームごとに呼び出される animate() 関数を定義し、その中でタイトルのテキストを更新します。
- FuncAnimation でアニメーションオブジェクトを作成し、show() メソッドで図を表示します。
コード例
import numpy as np
from matplotlib import pyplot as plt, animation
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
x = np.linspace(-10, 10, 1000)
y = np.sin(x)
plt.plot(x, y)
ax = plt.gca()
ax.text(0.5, 1.100, "y=sin(x)", bbox={'facecolor': 'red',
'alpha': 0.5, 'pad': 5},
transform=ax.transAxes, ha="center")
def animate(frame):
ax.text(0.5, 1.100, "y=sin(x), frame: %d" % frame,
bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 5},
transform=ax.transAxes, ha="center")
ani = animation.FuncAnimation(fig, animate, interval=100,
frames=10, repeat=True)
plt.show()
実行結果

コードのポイント解説
- animate(frame):各フレームで呼び出される関数です。引数
frameには現在のフレーム番号が渡され、それを文字列に埋め込むことでタイトルが順次更新されていきます。 - interval=100:フレーム間隔をミリ秒単位で指定します。この例では100ミリ秒ごとに次のフレームへ切り替わります。
- frames=10:アニメーションの総フレーム数です。0〜9の値が順番に
animate()へ渡されます。 - repeat=True:アニメーションを繰り返し再生します。
なお、上記のコードは毎回新しいテキストを描画しているため、フレームが進むにつれて古いテキストが重なって残る場合があります。実用的なアプリケーションでは、あらかじめ作成したTextオブジェクトの set_text() メソッドで内容だけを差し替えるか、ax.texts.clear() で既存のテキストを削除してから新しく追加する方法が推奨されます。こうすることで、より滑らかで効率的なアニメーションを実現できます。
-
Matplotlibでプロット上のグリッドサイズを定義する方法
Matplotlib を使ってプロット上にグリッド(格子線)を表示し、その間隔(サイズ)を自由に定義する方法を紹介します。基本的な流れは以下の手順のとおりです。 グリッドサイズを定義する手順 figure() メソッドを使って、新しい図(Figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、add_subplot() で図に Axes(座標軸)を追加します。 入力リストを渡して曲線をプロットします。 margins() メソッドで x 軸・y 軸のマージンを 0 に設定します。 X 軸のグリッド位置を指定するには、set_ticks() に目盛りの座標
-
Matplotlibで任意のデータを使って4Dプロットを作成する方法
Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x