Python Matplotlibでx・y・zのデータから3Dサーフェスをプロットする方法
PythonのMatplotlibを使えば、x、y、z の散布データから美しい3Dサーフェス(曲面)を簡単に描画できます。この記事では、NumPyで生成したデータを plot_surface() メソッドで可視化する手順を、サンプルコード付きでわかりやすく解説します。
3Dサーフェスをプロットする基本手順
x、y、z のデータから3Dサーフェスを描くには、以下の手順に従います。
rcParamsを使って図のサイズを設定し、サブプロット間の余白(パディング)を調整します。figure()メソッドで新しい図を作成します(既存の図をアクティブにすることも可能)。add_subplot()でprojection='3d'を指定し、図に3D用のAxesを追加します。- NumPyを使って x、y のデータ点を生成し、
meshgrid()でグリッド化した X、Y から Z 値を計算します。 plot_surface()メソッドで x、y、z のデータ点を3Dサーフェスとして描画します。show()メソッドで図を表示します。
サンプルコード
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x = np.array(np.linspace(-2, 2, 100)) y = np.array(np.linspace(-2, 2, 10)) X, Y = np.meshgrid(x, y) Z = X * np.exp(-X ** 2 - Y ** 2) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="plasma", linewidth=0, antialiased=False) plt.show()
コードのポイント解説
- meshgrid():1次元の x と y の配列から2次元の格子状座標(X、Y)を生成します。3Dプロットには必須の処理です。
- Z = X * np.exp(-X**2 - Y**2):ガウス関数を応用した数式でZ値を計算しています。これにより中央が盛り上がった滑らかな曲面が得られます。
- cmap="plasma":カラーマップを指定することで、Z値の高さに応じて色が変化し、曲面の起伏が視覚的に把握しやすくなります。お好みで
"viridis"や"coolwarm"なども試してみてください。 - rstride / cstride:行・列方向の描画間隔を指定します。値を大きくするとワイヤーフレームが粗くなり、軽量化できます。
- antialiased=False:アンチエイリアスを無効にして、描画速度を向上させています。
実行結果
上記のコードを実行すると、plasmaカラーマップで色付けされた3Dサーフェスが表示されます。x方向に細かい刻み(100点)、y方向に粗い刻み(10点)を設定しているため、縦方向にリッジのある特徴的な曲面が描かれます。
この手法は、実験データやシミュレーション結果など、実際の測定値を3次元で可視化したい場合にもそのまま応用できます。ぜひ自分のデータに置き換えて試してみてください。
-
Matplotlibでヒストグラムデータから折れ線グラフを描画する方法
Matplotlibでヒストグラムのデータをもとに折れ線グラフを描画するには、NumPyのhistogram()メソッドを使ってデータセットのヒストグラムを事前に計算しておくのが便利です。この記事では、同じデータをヒストグラムと折れ線グラフの両方で可視化する手順を解説します。実装の手順現在の図にサブプロットを追加します。nrows=2、ncols=1とし、index=1を指定します。NumPyのhistogram()メソッドを使用して、データセットのヒストグラム(度数とビンの境界値)を取得します。edgecolor=blackを指定してhist()メソッドでヒストグラムを描画します。インデック
-
PythonとMatplotlibで3次元散布図(3D散布図)を作成する方法をわかりやすく解説
Matplotlibとは?Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データの可視化は数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようにしてくれる重要なステップであり、定量的な洞察を効果的に伝えるためにも欠かせません。Matplotlibは主に2次元のグラフ描画に使用されますが、オブジェクト指向APIを備えており、作成したグラフをPythonアプリケーションに簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyder IDEなど、さまざまな環境でも利用