Sistem koordinat 3d petak python

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 axes3d
5 pada dasarnya memberikan koordinat
from mpl_toolkits.mplot3d import axes3d
5 dan variabel keluaran kedua
from mpl_toolkits.mplot3d import axes3d
7 memberikan koordinat
from mpl_toolkits.mplot3d import axes3d
7. 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 axes3d
5 dan
from mpl_toolkits.mplot3d import axes3d
7 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

Bagaimana Anda memplot koordinat 3D dengan Python?

Perencanaan 3D .
impor numpy sebagai np dari mpl_toolkits impor mplot3d impor matplotlib. pyplot sebagai plt plt
gbr = plt. angka[figsize = [10,10]] kapak = plt. sumbu [proyeksi = '3d'] plt
x = [1, 2, 3, 4] y = [3, 4, 5] X, Y = np. meshgrid[x,y] cetak[X] [[1 2 3 4] [1 2 3 4] [1 2 3 4]]

Bagaimana Anda memplot objek 3D dengan Python?

Bagaimana Anda memplot titik 3D dengan Python? .
Langkah 1. Impor perpustakaan. impor matplotlib. pyplot sebagai plt dari mpl_toolkits. mplot3d mengimpor Axes3D
Langkah 2. Buat gambar dan sumbu. gbr = plt. angka[figsize=[4,4]] kapak = gbr. add_subplot[111, proyeksi='3d']
Langkah 3. Plot intinya

Bagaimana cara memplot array 3D di matplotlib?

Membuat plot 3D di Matplotlib dari array numpy 3D .
Buat figur baru atau aktifkan figur yang sudah ada menggunakan metode figure[]
Tambahkan '~. kapak. .
Buat data acak size=[3, 3, 3]
Ekstrak data x, y, dan z dari larik 3D
Plot titik-titik tersebar 3D pada sumbu yang dibuat
Untuk menampilkan gambar, gunakan metode show[]

Bisakah matplotlib melakukan grafik 3D?

Pastikan bahwa versi Matplotlib Anda sudah lebih dari 1. 0. Sekarang setelah sumbu kita dibuat, kita dapat mulai memplot dalam 3D . Fungsi perencanaan 3D cukup intuitif. alih-alih hanya menyebarkan, kami memanggil scatter3D , dan alih-alih hanya meneruskan data x dan y, kami meneruskan x, y, dan z.

Bài mới nhất

Chủ Đề