2次元のプロットと同じように、Pythonでもmatplotlibを使って3次元のプロットを作成することができます。
この記事では、matplotlib を使用して 3 次元プロットを作成する方法を学びます。
How to Plot 3-Dimensional Plot in Python?
ここでは、matpotlib ライブラリとともに mplot3d ツールキットを使用する予定です。
mplot3d ツールキットは matplotlib ライブラリの上に構築されており、3次元のプロットを簡単に作成することができます。
では、早速始めましょう。
1. 必要なモジュールのインポート
まず始めに、matplotlibとmplot3dツールキットをインポートします。
また、サンプルデータを作成するためにnumpyもインポートします。
この3つをインポートするためのコードは以下の通りです。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt | 
2. 3次元軸の作成
インポートしたモジュールを使って、3次元の軸を作ることができる。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')plt.show() | 
結果は以下の通りです。
| ax.set_title('Learning about 3D plots')  | 
さて、軸ができたので、何かをプロットしてみましょう。
プロットするとき、3つの軸(x,y,z)すべてに値を与えることを確認する必要があります。
次のセクションでは、正弦波関数(サインとコサイン)を使って螺旋を作る方法を学びます。
その前に、プロットにタイトルを追加する方法を学びます。
3. プロットにタイトルを追加する
setttp_title() メソッドを使用すると、プロットにタイトルを追加することができます。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#set titleax.set_title('Learning about 3D plots') plt.show() | 
上記のコードが動作しているのを見るには、次のコードを実行してください。
| z =np.linspace(0, 15, 1000)x =np.sin(z)y =np.cos(z) | 
結果は以下の通りです。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#cordiates for spiralz =np.linspace(0, 15, 1000)x =np.sin(z)y =np.cos(z)ax.plot3D(x, y, z, 'red')plt.show() | 
4. スパイラルの作成
スパイラルを作成するために、X軸にサイン関数、Y軸にコサイン関数を使用します。
スパイラルのデータポイントは次のように生成される。
| ax.view_init(60, 50) | 
ここで、関数np.linespaceは0から15の間の1000個の等間隔な点を与える。
完全なコードは次の通りです。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#cordiates for spiralz =np.linspace(0, 15, 1000)x =np.sin(z)y =np.cos(z)ax.plot3D(x, y, z, 'red')ax.view_init(60, 50)plt.show() | 
結果は以下の通りです。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#cordiates for spiralz =np.linspace(0, 15, 1000)x =np.sin(z)y =np.cos(z)ax.plot3D(x, y, z, 'red')ax.view_init(120, 90)plt.show() | 
5. 見る角度を変える
3次元プロットは、見る角度によって見え方が異なります。
3次元プロットの視野角は、view_init()メソッドで変更することができます。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#function for Z valuesdeff(x, y):     returnnp.cos(np.sqrt(x **2+y **2))   # x and y valuesx =np.linspace(1, 10, 10) y =np.linspace(1, 10, 10)    X, Y =np.meshgrid(x, y) Z =f(X, Y)  ax =plt.axes(projection ='3d') ax.plot_wireframe(X, Y, Z, color ='red') plt.show() | 
以下はそのコードです。
| frommpl_toolkits importmplot3dimportnumpy as npimportmatplotlib.pyplot as plt#create 3d axesfig =plt.figure()ax =plt.axes(projection='3d')#function for Z valuesdeff(x, y):     returnnp.cos(np.sqrt(x **2+y **2))   # x and y values x =np.linspace(1, 10, 10) y =np.linspace(1, 10, 10)   X, Y =np.meshgrid(x, y) Z =f(X, Y)   ax =plt.axes(projection ='3d') ax.plot_surface(X, Y, Z, rstride=1, cstride=1,                cmap='viridis')plt.show() | 
結果は以下の通りです。
出力 :

ここでは、標高と軸の角度(度)の2つの引数を挙げている。
別の角度で試してみましょう。

出力は以下のようになります。

6. ワイヤーフレームのプロット
下記の例のように、3次元のワイヤーフレームを plot_wireframe() メソッドでプロットすることができます。

結果は以下の通りです。
出力:

ここでは、np.meshgridという関数で、座標ベクトルから座標行列を生成しています。
同様に、サーフェスプロットを作成することもできます。
次節でその方法を学びましょう。
7. サーフェスプロットを作成する
上記と同じデータでサーフェスプロットを作成することができます。
3次元のサーフェスプロットを作成するために、plot_surface()メソッドを使用します。

結果は以下の通りです。

ここで、以下の引数の意味は以下の通りです。
| — | — |
| rstride|配列の行の長さ(ステップサイズ)|cstride|配列の列の長さ(ステップサイズ)|etc.
| cstride|配列の列のストライド(ステップサイズ)||。
| camp|表面パッチのためのカラーマップ。
まとめ
このチュートリアルは Python での 3 次元プロットについてでした。
データ点と一緒に 3 次元の軸をプロットする方法を学びました。
mplot3d でさらに多くの 3 次元図形を学ぶには、それらの公式ドキュメントを参照してください。
