[matplotlib 3D] 24. 非構造化データのsurface plotを表示できるplot_trisurf その1

matplotlib 3D

はじめに

matplotlibのmplot3dで非構造化データのsurface plotを表示できるplot_trisurfについて説明する。

コード

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

解説

モジュールのインポート

データの生成

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の作成

trisurfで三角形のsurfaceグラフができる。x,y,zはmeshgrid的なデータではなく、1次元なデータとなっている。

z=0とした場合

参考

  1. NumPyのブロードキャストのメリットと解説 – DeepAge 
  2. https://matplotlib.org/examples/mplot3d/trisurf3d_demo.html

コメント