Apabila bekerja dengan koleksi mata 3D yang diwakili sebagai 3-tuple, ia tidak serta-merta jelas jika fungsi plot_surface adalah pilihan ideal untuk memplot permukaan. Mari kita mendalami nuansa dan ketahui cara menyediakan data untuk fungsi ini.
plot_surface memerlukan X, Y dan Z sebagai tatasusunan 2D. Tidak seperti plot permukaan daripada fungsi f(x, y) -> z, di mana anda boleh menyediakan domain grid, awan titik memberikan cabaran kerana ia memerlukan triangulasi.
Memandangkan data anda ialah senarai mata 3D, anda perlu tukarkannya kepada format yang plot_surface boleh faham. Satu pendekatan ialah menggunakan meshgrid untuk mencipta domain grid, seperti yang ditunjukkan dalam coretan kod berikut:
<code class="python">import numpy as np data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)] x, y = zip(*data) # Extract x and y coordinates from the tuples X, Y = np.meshgrid(x, y) # Create a grid domain for X and Y # Convert the z coordinates into a 2D array zs = np.array([z for x, y, z in data]).reshape(X.shape)</code>
Kini, anda mempunyai X, Y dan Z dalam format tatasusunan 2D yang diperlukan.
Dengan data sedia, anda boleh meneruskan dengan memplot permukaan menggunakan plot_surface:
<code class="python">from mpl_toolkits.mplot3d import Axes3D # Enable 3D plotting import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Create a 3D subplot ax.plot_surface(X, Y, Z)</code>
Ini seharusnya menghasilkan permukaan licin melalui titik yang diberikan.
Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel: * Bagaimanakah saya boleh memplot permukaan daripada koleksi titik 3D menggunakan fungsi `plot_surface` Matplotlib? * Memplot Permukaan dalam Matplo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!