Matplotlib で表面プロットを作成する方法

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()

plot_surface を使用した matplotlib の表面プロット

これにより、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() メソッドを使用して図にカラーバーを追加し、表面プロットオブジェクトをメソッドに渡して、図をよりわかりやすくします。

comments powered by Disqus