ホームページ  >  記事  >  バックエンド開発  >  Matplotlib で 3D 点のリストから曲面をプロットするにはどうすればよいですか?

Matplotlib で 3D 点のリストから曲面をプロットするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 06:37:03480ブラウズ

How to Plot a Surface from a List of 3D Points in Matplotlib?

Matplotlib での曲面プロット

空間データを操作する場合、曲面を生成すると貴重な洞察が得られます。 Matplotlib では、plot_surface 関数がこの目的に利用されます。ただし、2D 配列の形式での入力が必要なため、3D 点を表す 3 タプルのリストと互換性がありません。

データ変換

曲面をプロットするには3 タプルからデータを必要な形式に変換する必要があります。指定されたデータには基礎となる関数 f(x, y) が欠落しているため、点を三角形分割して面を作成する必要があります。

三角形分割と変換

三角形分割プロセスについて、[triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html) 関数を使用できます。提供された点を接続する三角形のリストを生成し、表面メッシュを効果的に作成します。

三角形分割が完了すると、X、Y、Z に必要な 2D 配列を取得できます。これらの配列は頂点の座標を表します。

サーフェスのプロット

変換されたデータを使用して、plot_surface を呼び出すことができます。

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection

# List of 3-tuples representing points
data = [(x1, y1, z1), (x2, y2, z2), ...]

# Triangulate the points
triangles = triangulate_points(data)

# Extract 2D arrays for X, Y, and Z
X, Y, Z = zip(*triangles)

# Plot the surface
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()</code>

このスクリプトは、指定された 3D ポイントをカバーする滑らかなサーフェス。

以上がMatplotlib で 3D 点のリストから曲面をプロットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。