[matplotlib 3D] 11. 3Dグラフ上に円、線、面などの図形を表示する方法(pathpatch3d)

matplotlib 3D

はじめに

このページでは、matplotlibを使って3Dグラフ上に円、線、面などの図形を表示する方法について説明します。pathpatch3dを利用して、2次元のパスを3D空間に投影する手法を紹介します。

コード

解説

モジュールのインポート

円にはCircle、線と面(ポリゴン)にはart3dを使います。

バージョン

3Dグラフの設定

3Dグラフでアスペクト比を揃えるには、ax.set_box_aspect((1,1,1))のようにします。

円の追加

Circle((xの位置、yの位置), 半径) で円を設定します。[2]
ax.add_patch(q) で図中に円を追加します。2D の円を pathpatch_2d_to_3d 関数を使って3Dグラフ上に表示できます。[3]

線の追加

Line3D([xの座標]、[yの座標]、[zの座標])を使うと、最初のX,Y,Z座標から最後のX,Y,Z座標まで連続した線が引かれます。ax.add_line(line)で図中に線を追加できます。[4]

ポリゴンの追加

x, y, z の位置情報は、list(zip(x, y, z)) でまとめて、Poly3DCollection にリスト [] で渡すことで描画できます。[5] ax.add_collection3d() で図中に追加できます。

回転アニメーション

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

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

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

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

まとめ

pathpatch3dを使用することで、2次元の図形を3D空間に投影し、視覚的に豊かなグラフ表現が可能になります。円や線、多角形などの基本図形を組み合わせることで、複雑な立体表現も実現できます。

データ可視化においては、これらの技術を活用することで、より直感的で分かりやすい表現が可能になります。特に科学データや統計データの表現に役立ちます。

参考

Draw flat objects in 3D plot — Matplotlib 3.10.5 documentation
mpl_toolkits.mplot3d.art3d.Line3D — Matplotlib 3.10.5 documentation
mpl_toolkits.mplot3d.art3d.pathpatch_2d_to_3d — Matplotlib 3.10.5 documentation
Plotting 3D Polygons
I was unsuccessful browsing web for a solution for the following simple question:How to draw 3D polygon (say a filled re...

コメント

  1. […] なる。[3]表示する場所は、蓋なのでz=10, zdir=”z”とする。 […]

  2. […] [3]表示する場所は、蓋なのでz=10, zdir=”z”とする。 […]