Matplotlib 上級

3D サーフェスプロット

projection="3d"、plot_surface、view_init で 3D のサーフェスとワイヤーフレームを描きます。

はじめに

x と y によって高さが決まるように、2つの入力に依存するデータがあります。projection="3d" で作る 3D の Axes は、それをサーフェスとして描けます。view_init でカメラを回し、いちばん見やすい角度から眺められます。

np.meshgrid は2つの1次元の範囲を2次元のグリッド X と Y に変えるので、すべての (x, y) の組について Z を一度に計算できます。plot_surface はカラーマップでサーフェスを塗り、plot_wireframe なら網目の線だけを描きます。view_init(elev, azim) はカメラの位置で、elev は見下ろす角度、azim は垂直軸のまわりの回転です。

インタラクティブ ビジュアライザー

elev と azim でカメラを回し、サーフェスとワイヤーフレームを切り替え、別の関数も試してみましょう。

実行できる Matplotlib の例

Matplotlib
コードを実行 →
main.py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 40)
y = np.linspace(-3, 3, 40)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))

fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(projection="3d")
ax.plot_surface(X, Y, Z, cmap="viridis")
ax.view_init(elev=30, azim=45)
ax.set_title("z = sin(sqrt(x² + y²))")
plt.show()
この例の実行ボタンを作成 このコードが描くグラフ
3D サーフェスプロット