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

matplotlib 3D

はじめに

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の座標])で1個めのX,Y,Zの位置から連続して最後のX,Y,Zの位置にまで線が引かれる。
ax.ad_line(line)で図中に線を追加。[4]

ポリゴンの追加

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

回転アニメーション

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

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

[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlib mplot3d のグラフの回転アニメーション
コードをダウンロード(.pyファイル)

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

参考

Draw flat objects in 3D plot — Matplotlib 3.9.3 documentation
mpl_toolkits.mplot3d.art3d.Line3D — Matplotlib 3.9.3 documentation
mpl_toolkits.mplot3d.art3d.pathpatch_2d_to_3d — Matplotlib 3.9.3 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”とする。 […]