Matplotlib で表面プロットを作成する方法
Suraj Joshi
2020年6月25日
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()
メソッドを使用して図にカラーバーを追加し、表面プロットオブジェクトをメソッドに渡して、図をよりわかりやすくします。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn