[matplotlib 3D] 24. 非構造データのsurface plot(trisurf)

matplotlib 3D
スポンサーリンク
スポンサーリンク

はじめに

matplotlib mplot3dのtrisurfで非構造データであるプリングルスの形を表示する。

スポンサーリンク

コード

スポンサーリンク

解説

radii = np.linspace(0.125, 1.0, n_radii)

rが0だとデータがダブっているのがたくさんできるので0.125からの数列。

angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]

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個。[1]

ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

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

antialiased=False

色を変える

color=’#eff759′
スポンサーリンク

参考

  1. NumPyのブロードキャストのメリットと解説 – DeepAge 
スポンサーリンク
matplotlib 3Dpython
スポンサーリンク
この記事をシェアする
sabopy.comをフォローする
スポンサーリンク
サボテンパイソン

コメント