Pynote

Python、機械学習、画像処理について

matplotlib - 2変数関数を3Dで可視化する。

ワイヤーフレームでグラフを作成する。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def func(x, y):
    return x**2 + y**2

X, Y = np.meshgrid(np.arange(-3., 3., 0.5),
                   np.arange(-3., 3., 0.5))
Z = func(X, Y)

# ワイヤーフレームでグラフを作成する。
fig = plt.figure(figsize=(6, 6))
axes = fig.add_subplot(111, projection='3d')
axes.plot_wireframe(X, Y, Z)

plt.show()


ポリゴンでグラフを作成する。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def func(x, y):
    return x**2 + y**2

X, Y = np.meshgrid(np.arange(-3., 3., 0.5),
                   np.arange(-3., 3., 0.5))
Z = func(X, Y)

# 点でグラフを作成する。
fig = plt.figure(figsize=(6, 6))
axes = fig.add_subplot(111, projection='3d')
axes.plot_surface(X, Y, Z)

plt.show()


点でグラフを作成する。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def func(x, y):
    return x**2 + y**2

X, Y = np.meshgrid(np.arange(-3., 3., 0.5),
                   np.arange(-3., 3., 0.5))
Z = func(X, Y)

# 点でグラフを作成する。
fig = plt.figure(figsize=(6, 6))
axes = fig.add_subplot(111, projection='3d')
axes.scatter(X, Y, Z, marker='o')

plt.show()


等高線を作成する。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def func(x, y):
    return x**2 + y**2

X, Y = np.meshgrid(np.linspace(-3., 3., 100),
                   np.linspace(-3., 3., 100))
Z = func(X, Y)

# 点でグラフを作成する。
fig = plt.figure(figsize=(6, 6))
axes = fig.add_subplot(111, projection='3d')
axes.contour3D(X, Y, Z)

plt.show()


等高線を作成する。(同じ高さを塗りつぶす)

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def func(x, y):
    return x**2 + y**2

X, Y = np.meshgrid(np.linspace(-3., 3., 100),
                   np.linspace(-3., 3., 100))
Z = func(X, Y)

# 点でグラフを作成する。
fig = plt.figure(figsize=(6, 6))
axes = fig.add_subplot(111, projection='3d')
axes.contourf3D(X, Y, Z)

plt.show()