[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.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…

コメント

  1. […] […]

  2. […] アニメーションの部分は下記のwireframeの回転アニメーションとおなじコードとなっている。 […]