[matplotlib 3D] 14. 3Dグラフの回転アニメーション

matplotlib 3D

はじめに

3Dグラフ(静止画)はある一定方向からしか見られない。そこで、回転アニメーションとすることで異なる視点から見ることを試みたので、その方法を解説する。

コード

上記コードだとjupyter notebook上でうまくうごかないので、FuncAnimationを使って書き改めた。

コード(FuncAnimation)

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

解説

モジュールのインポート

スタイルの適用

テストデータの取得

get_test_dataの引数を変えると以下のようになる。

最初に表示するグラフの設定

視点を変えるアニメーション関数

figをreturnする必要がある。
elevはElevation viewing angle の略で、視点の高さの設定(default=30)、
azimはAzimuthal viewing angleの略で、方位角の設定(default=-60)となる。

アニメーションの表示

figは、figureオブジェクトで、このfigにアニメーションを表示する。
animateは、アニメーションに関する関数、ここでは3.6°ずつ横回転していくようにしてある。
init_funcは、figの初期化の設定であり(最初に表示するグラフの設定)が実行される。
frameはアニメーション全体のコマ数であり、
intervalは表示間隔[ms]で、100[ms]とすると、100frameの場合、10[s]のアニメーションとなる。
blitとは、Trueにするとアニメーションが最適化されて、カクカクしなくなるなどの効果がある。

アニメーションをHTML5のビデオにして出力することができる。

アニメーションの保存

上記のようにすることで100 dpiのアニメーションをffmpegで書き出して指定のファイル名で保存することができる。

blit=Falseとしたアニメーション

軸とグリッドを消したアニメーション

grid(False)でグリッドが消え、set_axis_off()で軸が消える。

縦方向回転

3Dグラフの縦方向の回転は下記を参照。

[matplotlib animation] 37. 3Dグラフの縦回転アニメーション
matplotlib FuncAnimationによる3Dグラフの縦回転アニメーション

縦&横方向回転

3Dグラフの縦&横の両方向の回転は下記を参照。

[matplotlib animation] 38. 3Dグラフの縦&横回転アニメーション
matplotlib FuncAnimationによる3Dグラフの縦&横回転アニメーション

参考

Rotating a 3D plot — Matplotlib 3.1.1 documentation
Bit Block Transfer - Wikipedia
Matplotlib > view_init(elev=None, azim=None)のデフォルト値 > elev = 30, azim = -60 - Qiita
```txt:動作環境 GeForce GTX 1070 (8GB) ASRock Z170M Pro4S Ubuntu 16.04 LTS desktop amd64 TensorFlow v...

コメント