[matplotlib 3D] 36. 回転放物面体

matplotlib 3D
スポンサーリンク

matplotlib mplot3dによる回転放物面

コード

でできる図。

解説

モジュールのインポート

from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

3Dグラフにする設定

fig=plt.figure()
ax = fig.gca(projection='3d')

データ生成

theta = np.linspace(0, 2*np.pi, 100)
r = np.linspace(0, 2, 100)
t,R =np.meshgrid(theta, r)
X = R*np.cos(t)
Y = R*np.sin(t)
Z = R**2


角度(theta),半径(r)でmeshgridを作成。
X, Yは極座標なので、

$$x=rcos\theta\\y=rsin\theta$$

とする。

回転放物面は

$$z=x^2+y^2$$

とあらわせるので、以下のようになる。

$$z=(rcos\theta)^2+(rsin\theta)^2 = r^2(cos^2\theta+sin^2\theta)=r^2$$

プロットの作成

ax.plot_surface(X, Y, Z,alpha=0.8, cmap=cm.winter)

cmap=cm.winterで冬っぽいカラーマップで表示。[1]
alpha=0.8で透明度0.8(1で不透明)のsurfaceグラフを作成。

軸ラベル、軸範囲の設定

ax.set_xlabel('x axis')
ax.set_ylabel('y axis')
ax.set_zlabel('z axis')
ax.set_xlim(-2.5,2.5)
ax.set_ylim(-2.5,2.5)
ax.set_zlim(0,5)
ax.set_aspect('equal')

参考

  1. matplotlib – カラーマップについて – Pynote
  2. python – matplotlib surface plot extends past axis limits – Stack …

コメント