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

MatplotlibでPythonのベクトル場(quiver)プロットをアニメーション化する方法

Pythonでベクトル場を表す矢印プロット(quiver)をアニメーション化するには、以下の手順に従います。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • NumPyを使って xy のデータ点を作成します。
  • 同様にNumPyを使って、各点におけるベクトル成分 uv を作成します。
  • 図(figure)とサブプロット(axes)を作成します。
  • quiver() メソッドを使って、2次元の矢印フィールドを描画します。
  • アニメーション化するには、animate() 関数内で uv の値を更新します。ここではベクトルの向きだけでなく、色もランダムに変化させて視覚的な動きを強調しています。
  • 最後に show() メソッドで図を表示します。

サンプルコード

import numpy as np
import random as rd
from matplotlib import pyplot as plt, animation

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x, y = np.mgrid[:2 * np.pi:10j, :2 * np.pi:5j]
u = np.cos(x)
v = np.sin(y)

fig, ax = plt.subplots(1, 1)
qr = ax.quiver(x, y, u, v, color='red')

def animate(num, qr, x, y):
    u = np.cos(x + num * 0.1)
    v = np.sin(y + num * 0.1)
    qr.set_UVC(u, v)
    qr.set_color((rd.random(), rd.random(), rd.random(), rd.random()))
    return qr,

anim = animation.FuncAnimation(fig, animate, fargs=(qr, x, y),
                               interval=50, blit=False)

plt.show()

コードの解説

データの生成

np.mgrid[:2 * np.pi:10j, :2 * np.pi:5j] を使うことで、0から2πまでの範囲に10×5個の格子点を自動的に生成できます。これにより、xy の2次元グリッドが作成されます。

初期状態では、u = cos(x)v = sin(y) として各格子点におけるベクトルの成分を定義しています。

アニメーションの仕組み

animate() 関数はフレーム番号 num を受け取り、位相を num * 0.1 ずつずらした新しい uv の値を計算します。そして set_UVC(u, v) メソッドで既存のquiverオブジェクトのベクトル成分を更新することで、毎フレーム再描画せずに効率的にアニメーションを実現しています。

さらに set_color() にランダムなRGBA値を渡すことで、フレームごとに矢印の色も変化させ、動きがより分かりやすくなっています。

FuncAnimationの設定

animation.FuncAnimation()interval=50 はフレーム間隔を50ミリ秒(約20fps)に指定しており、滑らかなアニメーションが得られます。なお、色の更新には全再描画が必要なため、ここでは blit=False を指定しています。

実行結果

このコードを実行すると、赤い矢印で構成されたベクトル場が波のようにうねりながら移動し、色も刻々と変化するアニメーションが表示されます。流体の流れや電磁場など、時間変化するベクトル場の可視化に応用できる便利なテクニックです。

  1. PythonのgmplotパッケージでGoogleマップ上にデータをプロットする方法

    Googleマップ上に地理座標を描画する方法はいくつもありますが、その結果をローカルファイル(HTML)として保存したい場合は、Pythonモジュール「gmplot」を利用するのが最も手軽です。gmplotは、matplotlibに似た直感的なインターフェースを備えたPythonライブラリで、HTMLとJavaScriptを自動生成し、Googleマップ上にさまざまなデータを重ねて表示することができます。gmplotのインストール方法gmplotがまだ環境にインストールされていない場合は、pipコマンドで簡単に導入できます。pip install gmplot上記のコマンドを実行すると、以下の

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c