Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memplot Permukaan daripada Senarai Titik 3D dalam Matplotlib?

Bagaimana untuk Memplot Permukaan daripada Senarai Titik 3D dalam Matplotlib?

DDD
DDDasal
2024-10-26 06:37:03480semak imbas

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

Ploting Permukaan dalam Matplotlib

Apabila bekerja dengan data spatial, penjanaan permukaan boleh memberikan cerapan berharga. Dalam Matplotlib, fungsi plot_surface digunakan untuk tujuan ini. Walau bagaimanapun, ia memerlukan input dalam bentuk tatasusunan 2D, menjadikannya tidak serasi dengan senarai 3-tuple yang mewakili titik 3D.

Transformasi Data

Untuk memplot permukaan daripada 3-tuple, kita perlu menukar data ke dalam format yang diperlukan. Memandangkan data yang diberikan tidak mempunyai sebarang fungsi asas f(x, y), kita mesti menyegitiga titik untuk mencipta permukaan.

Trianulasi dan Transformasi

Untuk proses triangulasi , kita boleh menggunakan fungsi [triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html). Ia menjana senarai segi tiga yang menyambungkan titik yang disediakan, dengan berkesan mewujudkan jaringan permukaan.

Setelah disegitiga, kita boleh mendapatkan tatasusunan 2D yang diperlukan untuk X, Y dan Z. Tatasusunan ini mewakili koordinat bucu untuk setiap segi tiga.

Memplot Permukaan

Dengan data yang diubah, kita kini boleh menggunakan 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>

Skrip ini akan menjana permukaan licin yang meliputi mata 3D yang diberikan.

Atas ialah kandungan terperinci Bagaimana untuk Memplot Permukaan daripada Senarai Titik 3D dalam Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn