全体ソースコードはじめに実験で取った時系列データを見返したり、プロトタイピングしたロジックをシミュレーションでデバッグしたい時は、それをアニメーション表示させるということをよくやります。普通にアニメーション表示させるだけだとただデータの頭からお尻までを再生するだけで終わってしまうので、一時停止や巻き戻し、時には早送りなどしながらじっくりデータを見たい時は少々不便です。そこで今回は、Pythonの描画ライブラリmatplotlibのGUI作成機能を利用して、アニメーション再生や一時停止、巻き戻しなどができるGUIツールのサンプルを作成したので紹介したいと思います。サンプルコード今回作成したツールは以下のようになりました。ソースコードやGIFアニメーション、お試し用のサンプルデータはGitHubで公開しています。github.com必要なモジュール今回のツールでは以下のモジュールが必要になるのでimportしておきましょう。datetimeサンプルデータの読み込み今回はサンプルデータとして、GPSのNMEAデータをpandasのデータフレームとして保存したCSVファイルを読み込ませます。GPSのNMEAデータに関しては前回の記事を参照ください。Num']GUI全体のウィンドウと各種グラフスペースの配置GPSのX-Y座標プロットグラフ、HDOPの時系列グラフ、測位衛星数の時系列グラフのaxesを作成しておきます。時系列グラフのX軸にはDateTimeIndexを割り当てているのですが、縦方向にかなりのスペースを使ってしまっています。今後はこういうところの省スペース化も考えてのが今後の課題ですね。top=None)アニメーション操作用ラジオボタンアニメーションの再生速度を設定するものと、再生と一時停止を切り替えるものと、2種類のラジオボタンを作成します。今回のアニメーションはデフォルトで50msサイクルで再生しますが、それを2倍速、1.5倍速、0.75倍速、0.5倍速に設定できるようにしています。一気にざっと見たい場合でもじっくり見たい場合でも対応できるようにしました。Falsesrt_stp_btn_obj.on_clicked(select_start_stop)アニメーション操作用スライダーアニメーションを手動でコマ送りしたり、巻き戻したりするためのGUIをスライダーで実現します。ここでは、スライダーには再生するデータ配列のindexを割り当てておきます。whileループで配列のデータを0から順番に抽出して表示するのと同時に、そのindexの値をスライダーオブジェクトが持つset_valメソッドでセットすることにより、表示データの切り替えとスライダー上の値の変化を連動させています。prg_sld_obj.set_val(roop_count)またこの時、X-Y座標は各時刻の瞬間的な位置座標のみを表示させますが、HDOPと測位衛星数の時系列グラフは頭から表示時刻までの全てのデータを表示させるので、データ配列に対するindex指定の仕方が異なります。最後にアニメーションの更新処理部分を作成します。通常通りのplt.plotとかだと、ループが回るたびにplotオブジェクトが生成されてしまうのでどんどん処理が重くなってしまいます。そのため、まずはplotオブジェクトをデータが何もセットされていない状態で定義しておきます。linewidth=2.0)そして表示するデータを更新する際は、各plotオブジェクトが持つset_dataメソッドで各ループでのデータをセットすることによって実現します。pb_spd_prm)全体ソースコード最後に、ここまで記載したソースコードを全て組み合わせると以下のようになります。(1)Sponsor引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。