[matplotlib] 127. 3D空間でポリゴン(多角形)を生成・表示する方法

matplotlib

はじめに

3Dデータの可視化は、科学研究、エンジニアリング、デザインなど様々な分野で重要な役割を果たしています。PythonのライブラリMatplotlibを使用すると、3D空間でポリゴン(多角形)を生成・表示することができます。この記事では、3Dポリゴンの基本的な生成方法から応用例まで紹介します。

コード&解説

モジュールのインポート

バージョン

基本的な3Dポリゴンの生成方法

Matplotlibのmplot3dツールキットを使うことで、3D空間に多角形を描画できます。基本的な手順は以下の通りです:

このコードは、Matplotlibを使用して3D空間に八角形ポリゴンを描画するものです。主要部分の解説は以下の通りです:

  • ライブラリのインポート: matplotlib、numpy、3D描画用のツールキットをインポートしています。
  • 描画領域の設定: 3D投影を持つサブプロットを作成しています。
  • 八角形の頂点計算:
    • 半径1の円周上に8点を等間隔で配置。
    • numpy.linspace関数で0から2πまでの角度を8等分し、各頂点のx,y座標を計算。
  • ポリゴンの描画:
    • 頂点をリスト化して3Dポリゴンコレクションを作成。
    • 透明度(alpha=0.8)とサーモン色を設定。
  • 表示設定: 軸の範囲設定、ラベル付け、アスペクト比の設定を行い、最終的にプロットを表示。

複数の3Dポリゴンを積み重ねる

上記の基本例を拡張して、複数の六角形を異なるz座標に積み重ねることができます。これにより、より複雑な3D構造を表現できます。

  • 描画環境のセットアップfig = plt.figure()でプロット領域を作成し、ax = fig.add_subplot(111, projection='3d')で3D表示用のサブプロットを設定しています。
  • 多層ポリゴンの定義z_values = [0, 0.5, 1]で3つの異なる高さ(Z座標)を定義し、それぞれの高さに8角形を配置するようにしています。
  • 色の設定colors = ['red', 'green', 'blue']で各層のポリゴンに対して異なる色を割り当てています。
  • ポリゴンの生成と表示:forループを使って、各高さごとに8角形のポリゴンを生成しています。
    • verts = [list(zip(x, y, [z]*8))]で頂点の座標リストを作成。
    • poly = Poly3DCollection(verts, alpha=.5)で透明度0.5のポリゴンオブジェクトを作成。
    • 最初にset_color('salmon')を実行していますが、その後set_color(colors[i])で各層に異なる色(赤、緑、青)を割り当て直しています。
  • 表示設定:軸の比率、範囲、ラベルを設定して、最終的にplt.show()でプロットを表示しています。
コードをダウンロード(.pyファイル)

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

まとめ

Matplotlibを使った3Dポリゴン生成は、データ可視化、科学研究、教育など様々な分野で役立ちます。基本的な多角形の描画から始めて、複雑な3Dモデリングまで発展させることができます。

この記事で紹介した技術を応用すれば、地形モデル、数学的オブジェクトなど、多様な3D表現が可能になります。Pythonの豊富なライブラリと組み合わせることで、さらに高度な3Dビジュアライゼーションも実現できるでしょう。

参考資料

コメント