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

NumPyの3次元配列からMatplotlibで3Dプロットを作成する方法

NumPyで作成した3次元配列からMatplotlibを使って3Dプロットを描画するには、まずnumpyで3次元配列を生成し、そこからx・y・z座標のデータを抽出します。

以下の手順に従って実装できます。

  • figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。
  • add_subplot()メソッドを使用して、サブプロット配置の一部として図に'~.axes.Axes'(3D軸)を追加します。
  • size=(3, 3, 3)のランダムデータを生成します。
  • 3次元配列からx、y、zのデータを抽出します。
  • 作成した軸上に3D散布図をプロットします。
  • 図を表示するには、show()メソッドを使用します。

コード例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
data = np.random.random(size=(3, 3, 3))
z, x, y = data.nonzero()
ax.scatter(x, y, z, c=z, alpha=1)
plt.show()

実行結果

NumPyの3次元配列からMatplotlibで3Dプロットを作成する方法

コードのポイント解説

このサンプルコードにおける重要なポイントをいくつか解説します。

  • projection='3d':add_subplot()にこの引数を指定することで、通常の2D軸ではなく3D軸(Axes3D)が作成されます。
  • data.nonzero():配列内のゼロ以外の要素のインデックスを返すメソッドです。ここではz、x、yの順で受け取ることで、各点の3次元座標を取得しています。ランダムデータはほぼすべての要素が非ゼロになるため、実質的にすべての格子点がプロット対象となります。
  • c=z:z座標の値に応じて点の色を変えており、奥行き方向の位置関係が視覚的に把握しやすくなります。
  • alpha=1:点を完全不透明で描画する設定です。重なりを確認したい場合は、値を下げて半透明にすることも可能です。

この手法は、ボリュームデータや3次元グリッド上の測定値などを可視化する際に特に有用です。配列サイズを変更すれば、より大きなデータセットにもそのまま対応できます。

  1. Matplotlibの図からSVGファイルをエクスポートする方法

    Matplotlibで作成した図(フィギュア)をSVGファイルとして書き出す方法を解説します。SVGはベクター形式のため、拡大・縮小しても画質が劣化せず、Webサイトや印刷物での利用に最適です。エクスポートの手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。figureオブジェクトとサブプロットのセットを作成します。NumPyを使ってランダムなx座標とy座標のデータポイントを生成します。plot()メソッドを使ってxとyのデータポイントをプロットします。savefig()メソッドを使って.svg形式のファイルとして保存します。コード例import numpy a

  2. Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法

    PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.