[matplotlib 3D] 35. 円柱(円筒座標)

matplotlib 3D

はじめに

本記事ではmatplotlibのmplot3dを使って円柱(シリンダー)を3D表示する方法を解説します。円筒座標系を用いたデータ生成から3Dグラフ描画までの実装手順を、サンプルコードと共に詳しく紹介します。

コード

解説

モジュールのインポート

バージョン

3Dグラフにする設定

figを作成して、fig.gca(projection=’3d’)で3Dグラフにします。

円柱データの生成

半径2、高さ10の円柱を作成します。theta軸とz軸でmeshgridを作成し[1]、X座標とY座標は円筒座標系から変換するので、

$$x=rcos\theta\\y=rsin\theta$$

とします[2]

円柱をplot_surfaceで表示

color=’g’パラメータで緑色を指定し、alpha=0.5で透明度を50%に設定したsurfaceグラフを作成します。

蓋の作成

Circleオブジェクトを使用して、半径2、中心(0,0)の円を作成します。

ax.add_patchメソッドを使ってグラフに円を追加します。

pathpatch_2d_to3d関数を適用することで、3Dグラフ上に2D円を表示できるようになります。[3]

この円は円柱の蓋として表示されるため、z=10、zdir=”z”というパラメータを設定します。

底の作成

同様に円柱の底も作成します。底の位置は、z=0、zdir=”z”と設定します。

軸ラベル、軸範囲の設定

ax.set_box_aspect((1,1,1))でアスペクト比を揃えています。

回転アニメーション

作製した図を回転させると以下のようになります。

回転アニメーションについては、以下の記事を参考にして作成しました。

[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlibのmplot3dを使用して3Dグラフの回転アニメーションを作成する方法を解説します。動画として保存する手順や回転角度の制御など、3Dビジュアライゼーションを動的に表現するための基本テクニックを紹介します。
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)

参考

  1. Numpy入門 メッシュグリッドと可視化 – Python学習講座
  2. 円筒座標系 | CAE用語集| ソフトウェアクレイドル
  3. python – Add cylinder to plot – Stack Overflow

コメント

  1. […] [matplotlib 3D] 35. 円柱(円筒座標)matplotlib mplot3dによる円柱(円筒座標系)sabopy.com2018.11.26 […]