はじめに
jupyter notebook, labで対話的な操作ができる機能(ipywidgets)のFloatSliderをつかって、3Dグラフの任意の高さにおける断面図を表示する方法について説明する。
コード
解説
モジュールのインポートなど
jupyter labでインタラクティブな操作をするには、冒頭で%matplotlib widgetとする。
jupyter notebookの場合は%matplotlib notebookとなる。
バージョン
球の表示

球は下記記事と同様にして作成した。plot_surfaceでalphaを設定することで2つの球が見えるようにしている。

[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dをつかって、3Dグラフ上にsurface plotで球を表示する方法について解説する。
断面の表示

半径12の球の高さzにおける断面の半径はnp.sqrt(12**2-z**2)で表されるので、plt.Circle()で円を表示する。
sliderで任意の高さの断面を表示
ipywidgetsのFloatSliderでzを任意の値にしたときの断面を表示することができる。
layout=Layout(width=’50%’)とすることでスライダーの幅を拡張した。
ax.set_title(“z=”+str(z)+””)で現在のzの値をタイトルに表示する。
実際に動かしたときの様子は下記のようになる。
3Dグラフにsliderの高さを表示
3Dグラフ上にfloatsliderの値をラインで表示すると、下記のようになる。
参考
matplotlib.patches.Circle — Matplotlib 3.1.2 documentation
Widget List — Jupyter Widgets 8.1.5 documentation
The mplot3d Toolkit — Matplotlib 3.1.2 documentation
コメント