[matplotlib 3D] 25. trisurf 2

matplotlib 3D

matplotlib mplot3dでtrisurfその2

コード

でできる図。

解説

fig = plt.figure(figsize=plt.figaspect(0.5))

height / width = 0.5 という意味なので、高さの2倍の幅をもつグラフができる。

# Make a mesh in the space of parameterisation variables u and v
u = np.linspace(0, 2.0 * np.pi, endpoint=True, num=50)
v = np.linspace(-0.5, 0.5, endpoint=True, num=10)
u, v = np.meshgrid(u, v)
u, v = u.flatten(), v.flatten()

# This is the Mobius mapping, taking a u, v pair and returning an x, y, z
# triple
x = (1 + 0.5 * v * np.cos(u / 2.0)) * np.cos(u)
y = (1 + 0.5 * v * np.cos(u / 2.0)) * np.sin(u)
z = 0.5 * v * np.sin(u / 2.0)

メビウスの帯のデータ生成。[1]

tri = mtri.Triangulation(u, v)

Triangulation で三角形の座標とかを得る。

ax.plot_trisurf(x, y, z, triangles=tri.triangles, cmap=plt.cm.Spectral)

でtrisurfをプロット。

右の図は、[matplotlib 3D] 22. 3D tricontourと同じ。

参考

  1. メビウスの帯 – Wikipedia

コメント