Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。

折れ線グラフをアニメーション化する基本手順

  • subplots()メソッドを使用して、図(figure)とサブプロットを作成します。

  • x軸・y軸それぞれの表示範囲(スケール)を設定します。

  • NumPyを使って、xおよびtのデータ点を生成します。

  • 座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。

  • plot()メソッドでxとFのデータを使い、折れ線を描画します。

  • アニメーションのために、各フレームごとにyデータを更新します。

  • 更新用関数animate、対象となるfig、フレーム間隔intervalを指定し、FuncAnimationでアニメーションを構築します。

  • show()メソッドを呼び出して、図を画面に表示します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt, animation
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
ax.set(xlim=(-3, 3), ylim=(-1, 1))
x = np.linspace(-3, 3, 91)
t = np.linspace(1, 25, 30)
X2, T2 = np.meshgrid(x, t)
sinT2 = np.sin(2 * np.pi * T2 / T2.max())
F = 0.9 * sinT2 * np.sinc(X2 * (1 + sinT2))
line, = ax.plot(x, F[0, :], color='k', lw=2)
def animate(i):
    line.set_ydata(F[i, :])
anim = animation.FuncAnimation(fig, animate, interval=100, frames=len(t) - 1)
anim.save('503.gif')
plt.show()

実行結果

このコードを実行すると、時間の経過とともに波形が変化していくアニメーション付きの折れ線グラフが表示されます。また、anim.save('503.gif')によって、作成したアニメーションをGIFファイルとして保存することも可能です。

Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

ポイントのまとめ

アニメーション化の鍵となるのは、FuncAnimationクラスです。第一引数に図、第二引数にフレームごとの更新処理を行う関数を渡し、intervalでフレーム間隔(ミリ秒)を指定します。更新関数内でset_ydata()を使ってy値を差し替えることで、グラフを再描画せずに効率的なアニメーションを実現できます。

  1. Matplotlibでpcolormeshをアニメーション化する方法【コード例付き解説】

    Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。 アニメーション化の基本的な流れ pcolormeshをアニメーションさせるには、以下の手順に従います。 figureオブジェクトとサブプロットを作成する numpyを使ってx、y、tのデータポイントを生成する meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する カラーバーをfigureに追加する FuncAnimationクラスを使

  2. Matplotlibでヒストグラムデータから折れ線グラフを描画する方法

    Matplotlibでヒストグラムのデータをもとに折れ線グラフを描画するには、NumPyのhistogram()メソッドを使ってデータセットのヒストグラムを事前に計算しておくのが便利です。この記事では、同じデータをヒストグラムと折れ線グラフの両方で可視化する手順を解説します。実装の手順現在の図にサブプロットを追加します。nrows=2、ncols=1とし、index=1を指定します。NumPyのhistogram()メソッドを使用して、データセットのヒストグラム(度数とビンの境界値)を取得します。edgecolor=blackを指定してhist()メソッドでヒストグラムを描画します。インデック