3D grafikasini chizish
Matplotlib 0.99 versiyasida ikki o'lchovli va uch o'lchovli grafikalarga qo'shimcha ravishda chizish mumkin. Shaxsan men uchun Matlab-dan surf-funktsiyaning analogi yo'q edi.
Bundan tashqari, bizga matematik kutubxona kerak bo'ladi, chunki uch o'lchovli grafika darslarining ba'zi usullari numpy.array sinfining parametrlarini parametr sifatida kutadi va Numpy kutubxonasi o'zi kod satrlarini sezilarli darajada kamaytirishi mumkin.
Birinchi uch o'lchovli grafikа
Uch o'lchovli grafikalar bilan ishlash uchun barcha sinflar mpl_toolkits.mplot3d paketida joylashgan, siz ularni import qilishingiz kerak bo'ladi.
Uch o'lchovli grafikni chizish uchun birinchi navbatda uch o'lchovli o'qlarni yaratish kerak. Ularni yaratish uchun siz mpl_toolkits.mplot3d.Axes3D sinfining namunasini yaratishingiz kerak, uning tuzuvchisi kamida bitta parametrni kutadi - matplotlib.figure.Figure sinfining namunasi, bu esa o'z navbatida pylab.figure () ni chaqirish orqali yaratilishi mumkin. Matplotlib.figure.Figure klassining konstruktorida boshqa ixtiyoriy parametrlar mavjud, ammo hozircha biz ulardan foydalanmaymiz. Bo'sh o'qlarni chizamiz:
import pylab
from mpl_toolkits.mplot3d import Axes3D
fig = pylab.figure()
Axes3D(fig)
pylab.show()
Натижа:
Olingan o'qni sichqoncha bilan burishi
Olingan o'qlarga uch o'lchovli narsani chizish vaqti keldi. Barcha misollar uchun ikkita koordinatadan quyidagi funktsiyadan foydalanamiz.
Avval ma'lumotni chizish uchun tayyorlashingiz kerak. Bizga uch o'lchovli matritsa kerak: X va Y matritsalari yuqoridagi funktsiya hisoblanadigan nuqtalar tarmog'ining koordinatalarini saqlaydi va Z matritsasi ushbu funktsiyaning qiymatlarini tegishli nuqtada saqlaydi.
Agar biz tenglamali panjara ustiga (nuqtalar orasidagi masofa bir xil bo'lgan panjara ustida) uch o'lchovli grafik chizmoqchi bo'lsak, u holda kutubxonadagi meshgrid () koordinatalarni saqlaydigan matritsalarni yaratishga yordam beradi. Ushbu funktsiya bir o'lchovli massivlar uchun ikki o'lchovli matritsalarni yaratadi. Ushbu funktsiyaning ishlashi numpy uchun hujjatlarda juda aniq ko'rsatilgan:
>>> X, Y = numpy.meshgrid([1,2,3], [4,5,6,7])
>>> X
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
>>> Y
array([[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7]])
Endi panjara tugunining indeksiga ko'ra biz haqiqiy koordinatalarni topamiz: X [0] [0] = 1, Y [0] [0] = 4, va hokazo.
Ma'lumotlar tayyorlanishini rasmning o'zidan ajratish uchun biz panjara yaratamiz va funktsiyani alohida funktsiya sifatida hisoblaymiz:
def makeData ():
x = numpy.arange (-10, 10, 0.1)
y = numpy.arange (-10, 10, 0.1)
xgrid, ygrid = numpy.meshgrid(x, y)
zgrid = numpy.sin (xgrid) * numpy.sin (ygrid) / (xgrid * ygrid)
return xgrid, ygrid, zgrid
Ushbu funktsiya uchta ikki o'lchovli matritsalarni qaytaradi: x, y, z. X va y koordinatalari -10 dan 10 gacha, 0,1 nisbatda.
Endi biz to'g'ridan-to'g'ri chizishga qaytamiz. Ma'lumotlarimizni namoyish qilish uchun AxD3D sinf misolining plot_surface () metodini chaqirish kifoya, bunda biz makeData () funktsiyasi yordamida olingan ikki o'lchovli matritsalarni olamiz.
Endi bizning misolimiz quyidagicha:
Do'stlaringiz bilan baham: |