Ada banyak masalah dalam rekayasa yang memerlukan pemeriksaan domain 2-D. Misalnya, jika Anda ingin menentukan jarak dari titik tertentu pada permukaan datar ke permukaan datar lainnya, Anda perlu memikirkan koordinat x dan y. Ada berbagai fungsi lain yang membutuhkan koordinat x dan y
Untuk lebih memahami cara kerja pembuatan plot di Python, mulailah dengan membaca halaman berikut dari halaman Tutorial
Juga, ada beberapa tutorial bagus di luar sana. Sebagai contoh
Catatan
Pada matplotlib 3. 2. 0, submodule axes3d tidak perlu lagi diimpor dari mpl_toolkits. mplot3d. Untuk melakukan pemeriksaan cepat pada baris perintah, cobalah
import matplotlib matplotlib.__version__
Jika versi lebih awal dari 3. 2. 0, Anda perlu menambahkan
from mpl_toolkits.mplot3d import axes3d_
untuk pembukaan dari contoh di bawah ini
Tambalan Individu
Salah satu cara untuk membuat permukaan adalah dengan membuat daftar koordinat x, y, dan z untuk setiap lokasi tambalan. Python dapat membuat permukaan dari titik-titik yang ditentukan oleh matriks dan kemudian akan menghubungkan titik-titik tersebut dengan menghubungkan nilai-nilai di samping satu sama lain dalam matriks. Misalnya, jika x, y, dan z adalah matriks 2x2, permukaan akan menghasilkan kelompok empat garis yang menghubungkan empat titik dan mengisi ruang di antara keempat garis tersebut.
import numpy as np import matplotlib.pyplot as plt fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3], [2, 4]]] y = np.array[[[5, 6], [7, 8]]] z = np.array[[[9, 12], [10, 11]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] fig.tight_layout[] fig.savefig['PatchExOrig_py.png']
Versi Trinket
Perhatikan bahwa keempat "sudut" di atas tidak semuanya ko-planar;
ax.view_init[elev=30, azim=45] plt.draw[]
yang menghasilkan gambar berikut
Anda dapat menambahkan lebih banyak tambalan ke permukaan dengan memperbesar ukuran matriks. Misalnya, menambahkan kolom lain akan menambah dua persimpangan lagi ke permukaan
fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3, 5], [2, 4, 6]]] y = np.array[[[5, 6, 5], [7, 8, 9]]] z = np.array[[[9, 12, 12], [10, 11, 12]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] ax.view_init[elev=30, azim=220] fig.tight_layout[]_
Perhatikan rotasi untuk lebih melihat dua tambalan yang berbeda
Perintah meshgrid
Sebagian besar waktu, daripada menentukan tambalan individual, Anda akan memiliki fungsi dua parameter untuk diplot. Perintah meshgrid Numpy secara khusus digunakan untuk membuat matriks yang akan mewakili dua parameter. Sebagai contoh, perhatikan output dari perintah Python berikut
In [1]: [x, y] = np.meshgrid[np.arange[-2, 2.1, 1], np.arange[-1, 1.1, .25]] In [2]: x Out[2]: array[[[-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.], [-2., -1., 0., 1., 2.]]] In [3]: y Out[3]: array[[[-1. , -1. , -1. , -1. , -1. ], [-0.75, -0.75, -0.75, -0.75, -0.75], [-0.5 , -0.5 , -0.5 , -0.5 , -0.5 ], [-0.25, -0.25, -0.25, -0.25, -0.25], [ 0. , 0. , 0. , 0. , 0. ], [ 0.25, 0.25, 0.25, 0.25, 0.25], [ 0.5 , 0.5 , 0.5 , 0.5 , 0.5 ], [ 0.75, 0.75, 0.75, 0.75, 0.75], [ 1. , 1. , 1. , 1. , 1. ]]]
Argumen pertama memberikan nilai yang harus disertakan oleh variabel keluaran pertama, dan argumen kedua memberikan nilai yang harus disertakan oleh variabel keluaran kedua. Perhatikan bahwa variabel keluaran pertama
from mpl_toolkits.mplot3d import axes3d5 pada dasarnya memberikan koordinat
from mpl_toolkits.mplot3d import axes3d5 dan variabel keluaran kedua
from mpl_toolkits.mplot3d import axes3d7 memberikan koordinat
from mpl_toolkits.mplot3d import axes3d7. Ini berguna jika Anda ingin memplot fungsi dalam 2-D. Perhatikan bahwa nilai penghentian untuk perintah arange baru saja melewati tempat yang ingin kita akhiri
Contoh Menggunakan 2 Variabel Independen
Misalnya, untuk memplot
from mpl_toolkits.mplot3d import axes3d_9 pada rentang
from mpl_toolkits.mplot3d import axes3d5 dan
from mpl_toolkits.mplot3d import axes3d7 yang ditentukan di atas - kodenya adalah
fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] [x, y] = np.meshgrid[np.arange[-2, 2.1, 1], np.arange[-1, 1.1, .25]] z = x + y ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z', title='z = x + y'] fig.tight_layout[]
dan grafiknya adalah
Jika Anda ingin membuatnya lebih berwarna, Anda dapat mengimpor peta warna lalu menggunakannya;
import numpy as np import matplotlib.pyplot as plt from matplotlib import cm fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] [x, y] = np.meshgrid[np.arange[-2, 2.1, 1], np.arange[-1, 1.1, .25]] z = x + y ax.plot_surface[x, y, z, cmap=cm.copper] ax.set[xlabel='x', ylabel='y', zlabel='z', title='z = x + y'] fig.tight_layout[]
Untuk melihat semua peta warna, setelah mengimpor grup cm ketik saja
help[cm]
untuk melihat nama atau pergi ke Colormap Reference untuk melihat warna
Untuk mencari jarak r dari titik tertentu, katakanlah
import numpy as np import matplotlib.pyplot as plt fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3], [2, 4]]] y = np.array[[[5, 6], [7, 8]]] z = np.array[[[9, 12], [10, 11]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] fig.tight_layout[] fig.savefig['PatchExOrig_py.png']2, Anda hanya perlu mengubah fungsinya. Karena jarak antara dua titik \[[x, y]\] dan \[[x_0, y_0]\] diberikan oleh \[ r=\sqrt{[x-x_0]^2+[y-y_0]^2
fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] [x, y] = np.meshgrid[np.arange[-2, 2.1, 1], np.arange[-1, 1.1, .25]] z = np.sqrt[[x-[1]]**2 + [y-[-0.5]]**2] ax.plot_surface[x, y, z, cmap=cm.Purples] ax.set[xlabel='x', ylabel='y', zlabel='z', title='Distance from [1, -0.5]'] fig.tight_layout[]
dan plotnya adalah
Contoh Menggunakan Refined Grids
Anda juga dapat menggunakan kisi yang lebih halus untuk membuat plot yang terlihat lebih baik
from mpl_toolkits.mplot3d import axes3d_0
dan plotnya adalah
Menggunakan Sistem Koordinat Lain
Perintah plotting seperti
import numpy as np import matplotlib.pyplot as plt fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3], [2, 4]]] y = np.array[[[5, 6], [7, 8]]] z = np.array[[[9, 12], [10, 11]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] fig.tight_layout[] fig.savefig['PatchExOrig_py.png']3 dan
import numpy as np import matplotlib.pyplot as plt fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3], [2, 4]]] y = np.array[[[5, 6], [7, 8]]] z = np.array[[[9, 12], [10, 11]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] fig.tight_layout[] fig.savefig['PatchExOrig_py.png']4 menghasilkan permukaan berdasarkan matriks koordinat x, y, dan z, masing-masing, tetapi Anda juga dapat menggunakan sistem koordinat lain untuk menghitung ke mana titik pergi. Sebagai contoh, fungsi\[ z = e^{-\sqrt{x^2+y^2}}~\cos[4x]~\cos[4y] \]
dapat diplot pada grid bujursangkar menggunakan
from mpl_toolkits.mplot3d import axes3d_1
memberi
Itu juga bisa diplot pada domain melingkar menggunakan koordinat kutub. Untuk melakukannya, koordinat r dan \[\theta\] dapat dihasilkan menggunakan meshgrid dan nilai x, y, dan z yang sesuai dapat diperoleh dengan mencatat bahwa \[x=r\cos[\theta]\] dan \[ . z kemudian dapat dihitung dari kombinasi x, y, r, dan \[\theta\]
from mpl_toolkits.mplot3d import axes3d_2
menghasilkan
Bilah Warna
Anda mungkin ingin menambahkan bilah warna untuk menunjukkan nilai yang diberikan pada warna tertentu. Ini dapat dilakukan dengan menggunakan perintah
import numpy as np import matplotlib.pyplot as plt fig = plt.figure[num=1, clear=True] ax = fig.add_subplot[1, 1, 1, projection='3d'] x = np.array[[[1, 3], [2, 4]]] y = np.array[[[5, 6], [7, 8]]] z = np.array[[[9, 12], [10, 11]]] ax.plot_surface[x, y, z] ax.set[xlabel='x', ylabel='y', zlabel='z'] fig.tight_layout[] fig.savefig['PatchExOrig_py.png']_5 tetapi untuk menggunakannya Anda harus memiliki akses ke variabel yang merujuk ke plot permukaan Anda - perhatikan bagaimana chipplot variabel digunakan di bawah
from mpl_toolkits.mplot3d import axes3d_3
menghasilkan
Tidak ada percobaan
from mpl_toolkits.mplot3d import axes3d_4
Pertanyaan
Posting pertanyaan Anda dengan mengedit halaman diskusi artikel ini. Edit halaman, lalu gulir ke bawah dan tambahkan pertanyaan dengan memasukkan karakter *{{Q}}, diikuti dengan pertanyaan Anda dan terakhir tanda tangan Anda [dengan empat tanda gelombang, i. e. ~~~~]. Menggunakan {{Q}} akan secara otomatis menempatkan halaman dalam kategori halaman dengan pertanyaan - editor lain yang berharap dapat membantu kemudian dapat membuka halaman kategori tersebut untuk melihat di mana pertanyaannya. Lihat halaman untuk Template. Q untuk detail dan contoh