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

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

Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。

アニメーション化の基本的な流れ

pcolormeshをアニメーションさせるには、以下の手順に従います。

  • figureオブジェクトとサブプロットを作成する

  • numpyを使ってx、y、tのデータポイントを生成する

  • meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する

  • pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する

  • カラーバーをfigureに追加する

  • FuncAnimationクラスを使ってpcolormeshをアニメーション化する

  • show()メソッドで図を表示する

サンプルコード

以下は、時間とともに変化する2次元波動場をpcolormeshでアニメーション表示する完全なコード例です。

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()
x = np.linspace(-3, 3, 91)
t = np.linspace(0, 25, 30)
y = np.linspace(-3, 3, 91)
X3, Y3, T3 = np.meshgrid(x, y, t)
sinT3 = np.sin(2 * np.pi * T3 / T3.max(axis=2)[..., np.newaxis])
G = (X3 ** 2 + Y3 ** 2) * sinT3
cax = ax.pcolormesh(x, y, G[:-1, :-1, 0], vmin=-1, vmax=1, cmap='Blues')
fig.colorbar(cax)

def animate(i):
    cax.set_array(G[:-1, :-1, i].flatten())

anim = animation.FuncAnimation(fig, animate, interval=100, frames=len(t) - 1)
anim.save('517.gif')
plt.show()

コードのポイント解説

1. データの準備

np.meshgridを使うことで、x・y・tの3つの軸に対応する3次元の座標配列を作成しています。ここでは、位置(x, y)ごとの値が時間tによって変化するデータGを生成しています。

2. 初期フレームの描画

ax.pcolormesh()で最初のフレーム(G[:-1, :-1, 0])を描画します。vmin=-1, vmax=1を指定することで、全フレームでカラースケールを統一しているのがポイントです。これにより、アニメーション中に色の基準がぶれることを防げます。

3. アニメーションの更新処理

animate(i)関数内でcax.set_array()を呼び出し、i番目のフレームのデータに差し替えています。毎回新しいプロットを作成せずに既存のQuadMeshオブジェクトの配列だけを更新するため、高速かつ効率的にアニメーションできます。

4. GIFとして保存

anim.save('517.gif')を実行すると、作成したアニメーションをGIFファイルとして保存できます。interval=100は各フレーム間の間隔(ミリ秒)を意味し、framesにはフレーム数を指定しています。

実行結果

このコードを実行すると、中心からの距離に応じた強度が正弦波的に変化していく様子が、青系のカラーマップ(Blues)で滑らかにアニメーション表示されます。

  1. 【Python】Matplotlibで回転する3Dグラフをアニメーション化する方法

    Matplotlibで回転する3Dグラフを作成するには、Animationクラスを使用して関数を繰り返し呼び出します。この記事では、3Dサーフェスプロットをアニメーション化し、時間の経過とともに形状が変化する様子を可視化する手順を解説します。 実装の手順 メッシュグリッドの分割数(N)、1秒あたりのフレームレート(fps)、総フレーム数(frn)などの変数を初期化します。 曲線を描くための x、y、z の配列を作成します。 lambda関数を使って z 配列を生成する関数を定義します。 Animationクラスに関数を渡すために、前のフレームのプロットを削除し、新しい x、y、z 配列からサ

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

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線