Matplotlib で表面プロットを作成する方法
Suraj Joshi
2020年6月25日
2020年6月12日

Matplotlib では、Matplotlib の 2D 関数の上に構築された 3D プロットメソッドを含む 3D 分析と可視化のために mplot3d
ツールキットを使用します。Matplotlib の任意の軸の作成関数に projection='3d'
引数を渡すことにより、3 次元の軸を作成できます。3 次元軸が初期化されたら、plot_surface()
メソッドを使用して表面プロットを生成できます。
Axes3D.plot_surface()
メソッド
Axes3D.plot_surface(X, Y, Z, *args, **kwargs)
メソッドを使用して、表面プロットを作成できますここで、X、Y、Z はすべて 2 次元配列です。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8,6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3,3,100)
ydata = np.linspace(-3,3,100)
X,Y = np.meshgrid(xdata,ydata)
Z = 1/(1+np.exp(-X-Y))
ax3d = plt.axes(projection='3d')
ax3d.plot_surface(X, Y, Z,cmap='plasma')
ax3d.set_title('Surface Plot in Matplotlib')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')
plt.show()
これにより、Matplotlib を使用して 3D 空間に表面プロットが生成されます。ここで、cmap
パラメータを使用して、3D 色空間でデータを適切に表現します。プロットの色は、従属変数の値の変化に応じて変化します。
以下のパラメーターを変化させてプロットをカスタマイズできます。
rstride
:デフォルト値が 10 の行ステップサイズcstride
:デフォルト値が 10 の列ステップサイズcolor
:表面の色cmap
:表面のカラーマップfacecolors
:サーフェスの各パッチの面の色norm
:値を色にマップする Normalize のインスタンスvmin
:マップする最小値vmax
:マップする最大値shade
:フェイスカラーをシェーディングするかどうか
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8,6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3,3,100)
ydata = np.linspace(-3,3,100)
X,Y = np.meshgrid(xdata,ydata)
Z = 1/(1+np.exp(-X-Y))
ax3d = plt.axes(projection='3d')
surf=ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title('Surface Plot in Matplotlib')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')
plt.savefig("Customized Surface Plot.png")
plt.show()
この例では、colorbar()
メソッドを使用して図にカラーバーを追加し、表面プロットオブジェクトをメソッドに渡して、図をよりわかりやすくします。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn