Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-26 14:55:30
asal
972 orang telah melayarinya

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

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!

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