Memplot Permukaan dengan Titik dalam Ruang 3D menggunakan Matplotlib
Dalam artikel ini, kami meneroka cara mencipta plot permukaan yang merangkumi koleksi titik dalam ruang tiga dimensi menggunakan perpustakaan Matplotlib Python, terutamanya modul mplot3dnya.
Fungsi plot_surface dalam mplot3d memerlukan tatasusunan dua dimensi untuk argumen X, Y dan Z, bukannya senarai 3-tuple sebagai awak ada. Oleh itu, langkah pertama ialah menyediakan data anda ke dalam format yang diperlukan.
Untuk permukaan, tidak seperti plot garisan, anda memerlukan grid tatasusunan 2D yang mewakili domain. Menggunakan mata diskret, seperti 3-tuple yang anda miliki, memberikan cabaran kerana terdapat berbilang triangulasi berpotensi yang boleh mencipta permukaan.
Pertimbangkan kod Python ini yang menghasilkan permukaan licin, dengan f(x, y) = x^2 y:
<code class="python">import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x = y = np.arange(-3.0, 3.0, 0.05) X, Y = np.meshgrid(x, y) # Calculate the Z values for each point in X and Y zs = np.array(fun(np.ravel(X), np.ravel(Y))) Z = zs.reshape(X.shape) # Plot the surface ax.plot_surface(X, Y, Z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show()</code>
Dalam contoh ini, X dan Y ialah tatasusunan 2D yang mewakili domain, dan Z ialah tatasusunan nilai yang sepadan untuk setiap titik. Fungsi plot_surface menggunakan tatasusunan ini untuk mencipta permukaan licin. Pendekatan ini sesuai untuk permukaan yang ditakrifkan oleh fungsi matematik.
Walau bagaimanapun, jika data anda terdiri daripada titik 3D diskret semata-mata, anda mungkin perlu mempertimbangkan pilihan lain.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta plot permukaan 3D daripada koleksi mata menggunakan Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!