はじめに
ipywidgetsのIntSliderをつかって、matplotlibの3Dプロットのアスペクト比をインタラクティブに変更する方法について説明する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2020/08/f4788ae03d99c0b63935bf3c6a8454ae.jpg)
解説
モジュールのインポートなど
jupyter labでipywidgetsを表示するために%matplotlib widgetとする。
バージョン
データの生成
媒介変数で球面のデータを作成する。
surface plotによる球の表示
plot_surfaceでx,y,zのデータを3Dグラフ上にsurface plotとして表示する。
IntSliderの設定
x_a,y_a,z_aを1から10の範囲で変化させることができるようにする。
IntSliderを変化させたときの動作
set_box_aspectでアスペクト比をセットする。なお、デフォルト値は4:4:3となっており、set_box_aspectはversion 3.3以上で使うことができる。
widgetの表示
![](https://sabopy.com/wp/wp-content/uploads/2020/08/91402e49367cc6da8c873c806155b9c4.jpg)
IntSliderを変化させたときの3Dプロットの変化
4:4:4の場合
3:3:3のようにしても同じ図が得られる。
![](https://sabopy.com/wp/wp-content/uploads/2020/08/0ee876c6ac8cd58f0b2dcac5292509b6.jpg)
8:3:8の場合
![](https://sabopy.com/wp/wp-content/uploads/2020/08/e503c761f4516a36a9cdaa4e3b47c02d.jpg)
8:8:3の場合
![](https://sabopy.com/wp/wp-content/uploads/2020/08/a4fe39164f65087f9e3234689b0eeaab.jpg)
参考
What's new? — Matplotlib 3.3.0 documentation
mpl_toolkits.mplot3d.axes3d.Axes3D — Matplotlib 3.3.0 documentation
コメント