Python
 Computer >> コンピューター >  >> プログラミング >> Python

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=150marker=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では後者の記述方が推奨されているため、新規にコードを書く場合はこちらを採用するとよいでしょう。

  1. PythonのMatplotlibで累積分布関数(CDF)をプロットする方法

    PythonのMatplotlibで累積分布関数(CDF)をプロットするには、以下の手順に従います。手順の概要図のサイズを設定し、サブプロット間および周囲の余白を調整します。サンプルデータの個数を表す変数 N を初期化します。NumPyを使ってランダムデータを作成します。data と bins=10 を指定して、データセットのヒストグラムを計算します。確率密度関数(PDF)を求めます。手順5で得た pdf を使って、cdf を計算します。plot()メソッドを使用し、ラベル「CDF」を付けて cdf をプロットします。凡例を図上に配置します。show()メソッドで図を表示します。コード例imp

  2. Matplotlibで日時軸上に長方形をプロットする方法を解説

    Matplotlibを使用して日時(datetime)軸上に長方形を描画するには、以下の手順に従います。図のサイズを設定し、サブプロット間および周囲のパディングを調整します。新しい図を作成するか、既存の図をアクティブにします。add_subplot()メソッドを使って、サブプロット配置の一部として図にAxes(軸オブジェクト)を追加します。長方形を定義するために、Pythonのdatetimeとmatplotlib.datesを組み合わせて、アンカーとなる基準点を求めます。add_patch()メソッドを使って、軸にPatch(長方形パッチ)を追加します。x軸の主目盛りに対してロケーターとフォ