[matplotlib animation] 23. 胴体が伸びる犬

matplotlib Animation

はじめに

この記事は、matplotlibのFuncAnimationを使用して、胴体が伸びる犬のアニメーションを作成する方法について解説しています。Pythonのmatplotlibライブラリを活用して、基本的な図形を組み合わせた犬のキャラクターを描き、その胴体部分が伸縮するアニメーション効果を実装する手順が示されています。コードの解説と実行結果の視覚的な表現が含まれています。

コード

解説

モジュールのインポート

グラフの設定

図の大きさは、横長の形状を実現するためfigsize(8,4)に設定しています。

犬の作成

犬は、matplotlibの簡単な図形を描画する機能(patches, lines)を使って描きました。詳細は以下にあります。

[matplotlib] 4. 犬(dog)
matplotlibのpatchesモジュールを使って犬の図形を描画する方法を解説。Pythonで簡単に実装できる犬の図形描画のコード例とカスタマイズ方法を紹介します。データビジュアライゼーションを学ぶ初心者にも役立つ内容です。

アニメーション表示するための変数の設定

胴体の伸縮はx_shiftで実装しており、np.linspace()を使って増加する配列と減少する配列を作成し、np.hstack()でそれらを結合しています。

歩行動作については、胴体が1回伸縮する間に10歩歩くよう設計しています。そのため、x_shiftの10分の1のサイズの配列を作成し、np.tile()で10回繰り返すことでx_shiftと同じサイズに調整しています。

後ろ足は前足より少し遅れて動くよう設定しています。これを実現するために、np.zeros(5)を配列の先頭に追加し、末尾の5要素を削除することでサイズを維持しています。

アニメーションの設定

アニメーションの初期設定

initはアニメーションの開始時に実行される関数で、グラフの初期設定を行います。returnステートメントには、アニメーションで動かしたい要素を指定します。

アニメーションの設定

各図形や線は、set_*メソッドを使って動かします。具体的には、FancyBboxPatchはset_xとset_widthで、Wedge、Arc、Ellipse、Circleはset_centerで、そしてLine2Dはset_xdataで位置を制御します。

アニメーションの表示

intervalはアニメーションの各画像が切り替わる間隔の設定で、単位はミリ秒(ms)です。

framesはupdate関数が実行される回数を指定します。interval × frames = 5000[ms]となるため、アニメーションの長さは5秒になります。また、HTML(ani.to_html5_video())を使用すると、Jupyter Notebook上にアニメーションを表示できます。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

matplotlibのFuncAnimationを使えば、簡単な図形を組み合わせたキャラクターのアニメーションが作成できます。今回は犬の胴体が伸びるアニメーションを例に、アニメーションの基本的な実装方法を学びました。このテクニックは教育用途やデータ可視化の際に役立つでしょう。

参考

Reference for Matplotlib artists — Matplotlib 3.10.6 documentation

コメント