[matplotlib animation] 111. 3D plotでfocal lengthを変えた時の見た目の変化

matplotlib

はじめに

Matplotlib 3.6.0から追加された新機能[3d plotのfocal length]を変化させた時に3d plotの見た目がどのように変わるかを、matplotlibのFuncAnimationのアニメーションで表示します。

focal lengthは、カメラの焦点距離に相当するパラメータで、3Dプロットの遠近感(パースペクティブ)を制御します。値が大きいほど望遠レンズのような圧縮された見え方になり、小さいほど広角レンズのような歪みが生じます。

コード&解説

モジュールのインポートなど

3D plot表示のために、mpl_toolkits.mplot3d からaxes3dをimportします。

バージョン

データの準備

axes3d.get_test_dataでテストデータ(X,Y,Z)を読み込みます。

focal_lengthを変化させてプロット

ax.plot_wireframe()で3Dプロットを作成し、ax.set_proj_type(‘persp’)でfocal_lengthに適切な値を設定すると以下のような表示になります。

アニメーションで表示

focal_lengthを連続的に変化させたアニメーションは以下の通りです。focal_lengthの値は、np.logspace(-2,0,100)を使用して10^-2から10^0までを対数スケールで均等に100点サンプリングしています。

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

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

参考

What's new in Matplotlib 3.6.0 (Sep 15, 2022) — Matplotlib 3.6.2 documentation

コメント