[matplotlib 3D] 24. 非構造化データの3D可視化:plot_trisurfの使い方

matplotlib 3D

はじめに

plot_trisurfは、非構造化データのsurface plotを表示するための関数です。通常のsurface plotは格子状に整列したデータを必要としますが、plot_trisurfは不規則に分布するデータポイントからなめらかな表面を生成できます。

コード

解説

モジュールのインポート

データの生成

rが0だとデータがダブっているのがたくさんできるので0.125からの始まる配列とする。endpoint=Falseで2πを含まない数列、[…, np.newaxis]で次元を追加している。[…, np.newaxis]がないとraddi*np.cos(angles)の計算ができない。

x = np.append(0, (radii*np.cos(angles)).flatten())

np.appendで配列を追加。raddiとnp.cos(angles)をかけることで配列をブロードキャストし、flattenで一次元化しているので、8*36 = 288個の配列となる。0をいれると289個となる。

trisurf plotの作成

plot_trisurfは内部でDelaunay三角形分割を使用して、点群から三角形メッシュを生成します。これにより、規則的なグリッドを持たないデータでも滑らかな表面を作成できます。plot_trisurfを使用すると三角形のsurfaceグラフを作成できます。この関数ではx, y, zはmeshgridのような構造化データではなく、単純な1次元配列として扱われます。

z=0とした場合

回転アニメーション

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

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

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

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

まとめ

plot_trisurfは、非構造化データや不規則に分布するデータポイントから3D表面プロットを生成するための強力なツールです。特に地形データや科学計算の結果など、規則的なグリッドを持たないデータの可視化に適しています。

参考

mplot3d example code: trisurf3d_demo.py — Matplotlib 2.0.2 documentation
NumPyのブロードキャストのメリットと解説
NumPyには演算を行う際に配列の形状(shape)を適切に調整するブロードキャスト(broadcasting)機能が備わっています。本記事では、ブロードキャストについての解説をします。

コメント