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

matplotlibでタプルのリストから3Dサーフェスをプロットする方法

matplotlibでタプルのリストから3Dサーフェスをプロットするには、以下の手順に従います。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • タプルのリストを作成します。

  • タプルのリストから x、y、z の各データポイントを取り出します。

  • 座標ベクトルから座標行列を生成します(np.meshgrid を使用)。

  • サーフェスプロット用の h のデータポイントを計算します。

  • 新しい図を作成するか、既存の図をアクティブにします。

  • 図から3D投影の現在の軸を取得します。

  • サーフェスプロットを作成します。

  • 図を表示するには plt.show() メソッドを使用します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# タプルのリスト
data = [(1, 3, 2), (3, 5, 2), (4, 7, 4), (8, 7, 4),
        (3, 6, 1), (3, 9, 0), (3, 9, 0)]

# タプルのリストからデータポイントを取得
x, y, z = zip(*data)

x, y = np.meshgrid(x, y)

h = x ** 2 + y ** 2

fig = plt.figure()

# 現在の軸を取得(3D投影)
ax = fig.gca(projection='3d')

# サーフェスプロット
ax.plot_surface(x, y, h, cmap='plasma')

plt.show()

補足:新しいバージョンのmatplotlibでの注意点

fig.gca(projection='3d') は古い書き方で、最近のmatplotlibでは非推奨となっています。代わりに fig.add_subplot(projection='3d') を使うと、より安全に3D軸を作成できます。

# 推奨される書き方
ax = fig.add_subplot(projection='3d')

出力結果

上記のコードを実行すると、次のような3Dサーフェスプロットが表示されます。

matplotlibでタプルのリストから3Dサーフェスをプロットする方法

  1. 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()メソッドを

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

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