はじめに
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点サンプリングしています。
参考
What's new in Matplotlib 3.6.0 (Sep 15, 2022) — Matplotlib 3.6.2 documentation
コメント