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

DDD
Lepaskan: 2024-10-26 06:37:03
asal
495 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!