Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membuat Plot Permukaan dalam Matplotlib dengan Senarai Mata 3D?

Bagaimana untuk Membuat Plot Permukaan dalam Matplotlib dengan Senarai Mata 3D?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 14:55:30812semak imbas

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

Plot Permukaan dalam Matplotlib

Apabila mencipta plot permukaan, fungsi plot_surface memerlukan tatasusunan 2D sebagai argumen untuk mewakili titik dalam ruang 3D. Walau bagaimanapun, jika anda hanya mempunyai senarai mata 3D, terdapat pertimbangan khusus yang perlu diambil.

Awan Titik Triangulasi

Untuk senarai mata 3D, plot_surface tidak boleh digunakan secara langsung kerana kekaburan dalam menyegitiga titik ke permukaan. Matplotlib tidak menyediakan kaedah untuk menyegitiga titik secara automatik ke dalam permukaan.

Pendekatan Alternatif: Permukaan Berasaskan Grid

Jika anda tidak mempunyai fungsi yang mewakili permukaan, anda boleh menjana permukaan berasaskan grid menggunakan fungsi seperti fun(x, y). Dalam pendekatan ini, anda mentakrifkan meshgrid titik dan mengira nilai z yang sepadan menggunakan fungsi yang diberikan.

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Define the function
def fun(x, y):
    return x**2 + y

# Create a meshgrid
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)

# Compute the z-values
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Create the surface plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)</code>

Pendekatan ini membolehkan anda mencipta permukaan licin yang melalui titik 3D yang diberikan dan meliputi keseluruhan tahap grid.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Plot Permukaan dalam Matplotlib dengan Senarai Mata 3D?. 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