はじめに
matplotlibのmplot3dで非構造化データの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の作成
trisurfで三角形のsurfaceグラフができる。x,y,zはmeshgrid的なデータではなく、1次元なデータとなっている。
z=0とした場合
回転アニメーション
作製した図を回転させると以下のようになる。
回転アニメーションは以下の記事を参考にして作成した。
[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlib mplot3d のグラフの回転アニメーション
参考
mplot3d example code: trisurf3d_demo.py — Matplotlib 2.0.2 documentation
NumPyのブロードキャストのメリットと解説
NumPyには演算を行う際に配列の形状(shape)を適切に調整するブロードキャスト(broadcasting)機能が備わっています。本記事では、ブロードキャストについての解説をします。
コメント