こんにちは!
皆さんは、3次元の散布図を表示したいと思ったことはありませんか?
機械学習でも、データの特徴をつかむために次元圧縮を行なった後に3次元でデータを表示することがよくあります。
Matplotlibを使うと、3次元の散布図を表示した後に回転することができるので非常に便利です。
今回の記事では、Matplotlibを使って3次元の散布図を表示させる方法に関して、以下の内容を紹介します。
- 使用するモジュール
- 3次元の散布図の描き方
投資、就活、英語についての記事を書いています。
気になる方は是非見てみてください!
使用するモジュール
3次元の散布図を表示させるため使用するモジュールは、Matplotlibのmpl_toolkits内の「Axes3D」というモジュールです。
このモジュールは、Matplotlibをインストールすると同梱されているため、使用するにはMatplotlibをインストールしましょう。
3次元の散布図の描き方
3次元の散布図を描くには、Matplotlibのオブジェクト指向の考え方を用います。
3D表示用のaxオブジェクトを作成し、そこにデータをプロットします。
以下のプログラムは、ランダムな3次元のデータを2通り生成し、色分けして3次元の散布図を表示するプログラムです。
import random
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#ランダムにデータ生成
x1 = [random.random() for i in range(10)]
y1 = [random.random() for i in range(10)]
z1 = [random.random() for i in range(10)]
x2 = [random.random() for i in range(10)]
y2 = [random.random() for i in range(10)]
z2 = [random.random() for i in range(10)]
#axオブジェクト作成
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#軸ラベル
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
#データのプロット
ax.plot(x1, y1, z1, "o", color="blue")
ax.plot(x2, y2, z2, "o", color="red")
#グラフの表示
plt.show()
実行結果
この方法で表示した3次元の散布図は、以下の図のように様々な方向へ回転することができます。
様々な方向からデータを確認することによって新たな知見が得られることもありますね。
プログラム内でimportしている「Axes3D」は、明示的に使用していませんが、importしないとエラーが出てしまうため注意してください。
これに関連して、以前はaxオブジェクトを作成する際に、
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
と表記していたため、Axes3Dを明示的に使用していましたが、現在では、
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
と表記する方法が推奨されているため、明示的にAxes3Dが使用されていません。
まとめ
今回の記事では、Matplotlibを使って3次元の散布図を表示させる方法に関して、以下の内容を紹介しました。
- 使用するモジュール
→「Axes3D」を使用 - 3次元の散布図の描き方
→Axes3dをimportする
3次元の散布図を表示するには、「Axes3D」を使用し、3次元表示用のaxオブジェクトに点をプロットします。
3次元の散布図は、様々なところで使用されるため、しっかりと方法を覚えておきましょう!