matplotlibで3次元データのプロット

Pythonのグラフ描画用のライブラリであるmatplotlibを使って、3次元データのプロットを行ったときのメモ。
matplotlibで2次元のデータ( y = f(x) のようなもの )の散布図を描画するのは簡単で、matplotlibの中のpyplotを使って

import numpy
import matplotlib.pyplot as plt
xs=numpy.random.rand(1,100)
ys=numpy.random.rand(1,100)
plt.scatter(xs, ys)
plt.show()

でできる。結果はこのような感じ。
(もちろん先に関数fを定義しておく必要はある。上の例ではランダムな値を入れている)
要は、同じ数のデータ系列が2つあれば、それをx,y軸の値に取るような散布図を描画できる。
これを3次元でやりたい。要はx, y, zの3つの同じ数のデータが合った時の散布図を作りたい。
これはちょっと面倒で、mpl_toolkits.mplot3dというのを使う。

import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
xs=numpy.random.rand(1,100)
ys=numpy.random.rand(1,100)
zs=numpy.random.rand(1,100)
fig=plt.figure()
ax=Axes3D(fig)
ax.scatter3D(xs, ys, zs)
plt.show()

これで下のような感じのプロットができる。

コメントする