Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。
3Dグラフをプロットする基本手順
Pythonで3Dグラフを描くには、以下のステップに従います。
- figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。
- Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。
- x、y、zそれぞれのデータポイントをリストとして定義します。
- scatter3D()メソッドを使い、x・y・zのデータポイントを3D散布図として追加します。ここではmarkersize=150、marker=diamond(ダイヤ型マーカー)を指定しています。
- show()メソッドを呼び出して、図を画面に表示します。
サンプルコード
実際のコードは以下の通りです。
from mpl_toolkits.mplot3d import Axes3D from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = Axes3D(fig) x = [2, 4, 6, 3, 1] y = [1, 6, 8, 1, 3] z = [3, 4, 10, 3, 1] ax.scatter3D(x, y, z, c=z, alpha=1, marker='d', s=150) plt.show()
コードのポイント解説
- plt.rcParams:図のサイズ(7.00×3.50インチ)と自動レイアウト調整を設定しています。
- c=z:z座標の値に応じてマーカーに色が割り当てられ、データの高低が色で視覚的に把握できます。
- alpha=1:マーカーを完全不透明で表示します。0に近づけるほど透明になります。
- s=150:マーカーのサイズを指定します。数値が大きいほど大きなマーカーになります。
このコードを実行すると、5つのデータポイントがダイヤ型のマーカーで立体的にプロットされた3D散布図が表示されます。マウスでドラッグすれば、グラフを自由に回転させてさまざまな角度から確認できるのも3Dプロットの魅力です。
補足:より新しい書き方
近年のMatplotlibでは、Axes3D(fig)の代わりに以下のようにprojection='3d'を指定する方法が推奨されています。
fig = plt.figure() ax = fig.add_subplot(projection='3d') ax.scatter(x, y, z, c=z, alpha=1, marker='d', s=150) plt.show()
どちらの方法でも同じ結果が得られますが、新しいバージョンのMatplotlibでは後者の記述方が推奨されているため、新規にコードを書く場合はこちらを採用するとよいでしょう。
-
PythonのMatplotlibで累積分布関数(CDF)をプロットする方法
PythonのMatplotlibで累積分布関数(CDF)をプロットするには、以下の手順に従います。手順の概要図のサイズを設定し、サブプロット間および周囲の余白を調整します。サンプルデータの個数を表す変数 N を初期化します。NumPyを使ってランダムデータを作成します。data と bins=10 を指定して、データセットのヒストグラムを計算します。確率密度関数(PDF)を求めます。手順5で得た pdf を使って、cdf を計算します。plot()メソッドを使用し、ラベル「CDF」を付けて cdf をプロットします。凡例を図上に配置します。show()メソッドで図を表示します。コード例imp
-
Matplotlibで日時軸上に長方形をプロットする方法を解説
Matplotlibを使用して日時(datetime)軸上に長方形を描画するには、以下の手順に従います。図のサイズを設定し、サブプロット間および周囲のパディングを調整します。新しい図を作成するか、既存の図をアクティブにします。add_subplot()メソッドを使って、サブプロット配置の一部として図にAxes(軸オブジェクト)を追加します。長方形を定義するために、Pythonのdatetimeとmatplotlib.datesを組み合わせて、アンカーとなる基準点を求めます。add_patch()メソッドを使って、軸にPatch(長方形パッチ)を追加します。x軸の主目盛りに対してロケーターとフォ