はじめに
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.2 documentation
Bit Block Transfer - Wikipedia
Matplotlib > view_init(elev=None, azim=None)のデフォルト値 > elev = 30, azim = -60 - Qiita
GeForce GTX 1070 (8GB)ASRock Z170M Pro4S Ubuntu 16.04 LTS desktop amd64Tensor…
コメント
[…] […]
[…] アニメーションの部分は下記のwireframeの回転アニメーションとおなじコードとなっている。 […]