[ipywidgets] 25. 卵状構造をとる2つの球の任意の高さにおける断面を表示

ipywidgets

はじめに

3次元空間における物体の形状を理解するには、断面図が非常に有効です。本記事では、ipywidgetsのFloatSliderを使用して、2つの球体が形成する卵状構造の任意の高さにおける断面を対話的に表示する方法を解説します。

コード

解説

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

Jupyter Labでインタラクティブな操作をするには、コードの冒頭で「%matplotlib widget」と記述します。Jupyter Notebookの場合は「%matplotlib notebook」となります。

バージョン

球の表示

球体は以下の記事と同様の方法で作成しました。plot_surface関数でalpha値(透明度)を設定することで、2つの球体が同時に視認できるようにしています。

[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dを使用して3Dグラフ上にsurface plotで球体を表示する方法を解説します。球の方程式からメッシュグリッドを作成し、3次元空間に美しく球体を描画する手順を紹介します。

断面の表示

半径12の球の高さzにおける断面の半径はnp.sqrt(12²-z²)で表されるので、plt.Circle()で円を表示する。

sliderで任意の高さの断面を表示

ipywidgetsのFloatSliderを使用することで、z座標の任意の値における断面を表示できます。 layout=Layout(width=’50%’)を設定して、スライダーの幅を広げています。

ax.set_title(“z=”+str(z)+””)で現在のz値をグラフのタイトルに表示します。 実際に操作したときの様子は以下のようになります。

3Dグラフにsliderの高さを表示

3Dグラフ上にfloatsliderの値をラインで表示すると、下記のようになります。

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

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

参考

matplotlib.patches.Circle — Matplotlib 3.1.2 documentation
Widget List — Jupyter Widgets 8.1.7 documentation
The mplot3d Toolkit — Matplotlib 3.1.2 documentation

コメント