Matplotlib畫三維曲線

到目前為止Matplotlib對於三維圖形,曲線的支持還比較簡單。比方畫一個三維的箭頭,目前還需要自己定義函數實現。但是也足夠用了,因為經常需要畫的曲線,曲面,矢量場等都可以實現了。三維文字也可以處理了,用起來也比較簡單。只需要從mpl_toolkits.mplot3d 導入Axes3D。

目前Axes3D目前可以實現:

  • Line plots
  • Scatter plots
  • Wireframe plots
  • Surface plots
  • Tri-Surface plots
  • Contour plots
  • Filled contour plots
  • Polygon plots
  • Bar plots
  • Quiver
  • 2D plots in 3D
  • Text

下面以螺旋線和莫比烏斯帶為例來說明怎麼使用。

螺旋線

from mpl_toolkits.mplot3d import Axes3Dfrom numpy import *from pylab import *fig = figure()ax=Axes3D(fig)t= linspace(-4 * np.pi, 4 * np.pi, 100)z = 2*tr = 1x = r * sin(t)y = r * cos(t)ax.plot(x, y, z, label=helix)legend()show()

莫比烏斯帶

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()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)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)ax = Axes3D(fig)ax.plot_surface(x, y, z, cmap=plt.cm.Greys_r)ax.set_zlim(-1, 1)plt.show()

推薦閱讀:

TAG:Matplotlib | numpy | 可視化 |