PythonとMatplotlibで3次元散布図(3D散布図)を作成する方法をわかりやすく解説
Matplotlibとは?
Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようにしてくれる重要なステップであり、定量的な洞察を効果的に伝えるためにも欠かせません。
Matplotlibは主に2次元のグラフ描画に使用されますが、オブジェクト指向APIを備えており、作成したグラフをPythonアプリケーションに簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境でも利用可能です。
MatplotlibはPythonで書かれており、数値計算用ライブラリであるNumPyを基盤として構築されています。
Matplotlibのインストール方法
Windows環境では、以下のコマンドでインストールできます。
pip install matplotlib
Matplotlibの動作には、以下の依存パッケージが必要です。
Python(バージョン3.4以上) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
3次元プロットの活用シーン
3次元プロットは、データ点のx軸・y軸・z軸の3つの情報を同時に視覚化したい場合に有効です。また、機械学習の分野では、勾配降下法がどのように動作するのかを理解したり、アルゴリズムの係数の最適値を探索したりする際にもよく利用されます。
ここからは、Matplotlibを使って3次元散布図を作成する具体的な手順を見ていきましょう。
サンプルコード
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)
ax.scatter(x, y, z, 'blue')
ax.set_ylabel("Y-axis")
ax.set_xlabel("X-axis")
ax.set_zlabel("Z-axis")
ax.set_title('A sample 3D scatter plot')
plt.show()実行結果

コードの解説
必要なパッケージをインポートし、使いやすいようにエイリアス(別名)を定義しています。
「figure」関数を使って空の図(フィギュア)を作成します。
「axes」関数に
projection='3d'を指定することで、3次元プロット用の座標軸を生成します。これが3D描画のポイントです。NumPyライブラリを使ってデータ値を生成しています。
np.linspaceで0〜1までの等間隔の値を100個作り、それをもとにsin・cosを使ってらせん状の3次元データを構成しています。「scatter」関数により、生成したデータを3次元散布図として描画することを指定しています。
set_xlabel、set_ylabel、set_zlabel、set_titleの各関数を使って、X軸・Y軸・Z軸のラベルおよびグラフのタイトルを設定しています。
最後に「show」関数を呼び出すことで、作成したグラフが画面に表示されます。
まとめ
このように、mpl_toolkitsのmplot3dモジュールとMatplotlibを組み合わせることで、わずか十数行のコードで美しい3次元散布図を作成できます。データ分析や機械学習における多次元データの理解にぜひ役立ててください。
-
PythonのSeabornライブラリで棒グラフ(barplot)を使う方法をわかりやすく解説
Seabornは、データの可視化を支援するPythonライブラリです。洗練されたカスタムテーマと高水準インターフェースを備えており、少ないコード量で美しい統計グラフを作成できるのが大きな特徴です。 棒グラフ(barplot)とは これまでの散布図などのプロットでは、データセット全体をグラフ上に描画していました。一方、棒グラフ(bar plot)を利用すると、データ分布の中心的な傾向(中央傾向)を直感的に把握することができます。 barplot関数は、カテゴリ変数と連続変数の関係を表現するために使用します。データは長方形のバーとして描画され、バーの高さ(長さ)がそのカテゴリにおける値の大きさや割
-
PythonとSeabornを使って散布図を表示する方法をわかりやすく解説
データ分析において可視化(ビジュアライゼーション)は非常に重要なステップです。数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データに何が起きているのかを直感的に把握できるからです。その可視化を手軽に実現できるライブラリの一つが、Pythonの「Seaborn」です。 散布図(scatter plot)とは、データポイントをグラフ上に点として散りばめて分布を表現するグラフのことです。数値データの値をドットで表し、横軸・縦軸上の各ドットの位置が、それぞれのデータポイントの値を示します。散布図を使うことで、2つの変数間の関係性(相関)を視覚的に理解することができます。 ここでは、Sea