from mpl_toolkits.mplot3d import Axes3DこのAxes3Dをimportすることで、3Dプロットの機能が利用可能になります。実際に3Dプロットのオブジェクトを得るには、Figureオブジェクトの「gca」というメソッドを使います。
変数 = plt.figure().gca(projection='3d')projectionを'3d'に指定して実行することで、3Dプロットのオブジェクト(Axes3Dオブジェクト)が得られます。
x = numpy.arange(1, 4, 1)numpyのarrangeは等差級数の数列を作成するものでしたね。これで1~3の数列が作成できます。そしてその後にある「meshgrid」というメソッドが格子列を作成するメソッドです。これらで実際、どういうデータが作成されるかというと、こうなります。
y = numpy.arange(1, 4, 1)
gx, gy = numpy.meshgrid(x, y)
x = [1 2 3]xとyは、それぞれarrangeでこのようなリストが作成されます。これらを引数に指定して、meshgridを呼び出すと、戻り値は以下のようになるのです。
y = [1 2 3]
gx = [わかりますか。これらがX、Yの描画のために用意されたデータになります。見ればわかるようにgxとgyは、値の並びが違っていますね。それぞれ、X軸から・Y軸から見た並びになっているのがわかります。
[1 2 3]
[1 2 3]
[1 2 3]]
gy = [
[1 1 1]
[2 2 2]
[3 3 3]
]
《Axes3D》.plot_wireframe( X値 , Y値 , Z値 )3Dグラフの描画は、Axes3Dのメソッドを呼び出して行います。plot_wireframeはワイヤーフレームのグラフを、plot_surfaceは面を塗りつぶしたグラフをそれぞれ描画します。引数には、X、Y、Zのデータを指定します。
《Axes3D》.plot_surface( X値 , Y値 , Z値 )
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm ax = plt.figure().gca(projection='3d') # ax = Axes3D(plt.figure()) x0 = np.arange(-10, 10, 0.25) y0 = np.arange(-10, 10, 0.25) x, y = np.meshgrid(x0, y0) z = np.sin(np.sqrt(x * x + y * y)) surf = ax.plot_surface(x, y, z, cmap=cm.inferno, linewidth=0, antialiased=True) plt.show()
<< 前へ |