matplotlibのmplot3dで3Dグラフを作成

matplotlibは3Dのグラフも作成できる。mplot3dを使う。

公式のチュートリアル、例が参考になる。

二次元のガウス分布を可視化

平均を0、分散を $\sigma^2$とすると、二次元のガウス分布は、

$$
h_g (x,y) = \frac{1}{2\pi\sigma^2}\exp \Bigl( -\frac{x^2+y^2}{2\sigma^2} \Bigr)
$$

となる。これをグラフにしてみる。

なお、ここで挙げる種類以外のグラフもあるので、詳細は公式のチュートリアル参照。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-15, 15, 0.5)
X, Y = np.meshgrid(x, y)
sigma = 4
Z = np.exp(-(X**2 + Y**2)/(2*sigma**2)) / (2*np.pi*sigma**2)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
# ax.plot_wireframe(X, Y, Z, rstride=2, cstride=2)
# ax.scatter(X, Y, Z, s=1)
plt.show()

Surface plots

Surface plots

Wireframe plots

Wireframe plots

Scatter plots

Scatter plots

注意点

matplotlibのバージョンが1.0.0以前の場合は書き方が異なるので注意。

ax = fig.add_subplot(111, projection='3d')
# ver 1.0.0以前の場合は次のように書く
# ax = axes3d(fig)
スポンサーリンク

関連記事