Bu nima?

Matplotlib kutubxonasi

Grafik, diagramma va 3D modellarni yaratish uchun moʻljallangan Matplotlib kutubxonasi haqida maʼlumot beramiz. Uning yordamida grafik tuzish, sarlavha belgilash, funksiyalarni vizualizatsiya qilish va boshqa formatlash usullarini tasvirlaymiz.

Matplotlib kutubxonasi va uning vazifasi

Matplotlib — ma’lumotlarni Pythonʼda vizuallashtirishga mo‘ljallangan ochiq kodli kutubxona. Uning yordamida nuqtali va doiraviy diagramma, chiziqli grafik, gistogramma, xatoliklar diagrammasi, 3D grafikalar yaratish mumkin. Tayyor vizualizatsiya natijalarini PDF, SVG, JPG, PNG, BMP va GIF kabi formatlarda eksport qilish imkoni mavjud.

Matplotlib bilan ishlash uchun murakkab protokollar talab qilinmaydi. Kutubxona qisqa buyruqlar yordamida katta hajmdagi ma’lumotlarni vizuallashtirishga yordam beradi. Shu sabab vizuallashtirish uchun ancha murakkab bo‘lgan MATLAB o‘rniga Matplotlibʼdan foydalaniladi.

Matplotlibʼdagi grafik va diagramma turlari

Matplotlib veb-saytida grafik va diagrammalarning to‘liq ro‘yxati mavjud. Ulardan ba’zilarini ko‘rib chiqamiz.

  • Sochma diagramma ikki o‘zgaruvchi orasidagi o‘zaro bog‘liqlikni aks ettiradi. Har bir ma’lumot obyekti grafikda nuqta sifatida tasvirlanadi va nuqtalarning koordinatalari shu o‘zgaruvchilarning qiymatlariga mos keladi. Matplotlib kutubxonasi o‘zgaruvchilar o‘rtasidagi o‘zaro bog‘liqlik va bir o‘zgaruvchining o‘zgarishi ikkinchisiga qanday ta’sir qilishini ko‘rsatadigan scatter() usulini taqdim etadi.

Matplotlibʼdagi sochma diagramma mana shunday ko‘rinishga ega bo‘lishi mumkin. Bu turdagi diagramma, masalan, mijozning yoshi va daromadlari o‘rtasidagi farqni yoki bo‘sh ish o‘rinlari, unga nomzodlar nisbatini tasvirlash uchun juda qulay. Manba

  • Ustunsimon diagramma bu — toifaviy ma’lumotlarni vizuallashtirish. U qiymatlarni to‘g‘ri to‘rtburchaklar shaklida aks ettiradi va ularning balandligi har bir toifaning miqdori yoki qiymatiga mos keladi. Ustunli diagrammalar dinamika, reytinglar, bir nechta ko‘rsatkichlar o‘rtasidagi nisbatlarni, masalan, ikkita do‘kon tushumini vizualizatsiya qilish uchun mos keladi.

Matplotlibʼdagi ustunsimon diagrammaga misol. Manba

  • Doiraviy diagramma — toifaviy ma’lumotlar nisbatlarini vizualizatsiya qilish usuli. U har bir toifaning umumiy miqdordagi ulushini ko‘rsatadi. Doiraviy diagramma, masalan, bozor ulushi, sotuvlar hajmi yoki so‘rovnoma natijalarini tasvirlash uchun qulay vosita hisoblanadi.

Matplotlib kutubxonasi o‘zgaruvchili doiraviy va ichki diagrammani yaratish imkonini beradigan pie() usulini taqdim etadi. Bunga turli radiusli bir nechta doiraviy diagrammani ustma-ust joylashtirish orqali erishish mumkin. Tashqi doiraviy diagramma asosiy toifalarni, ichkisi esa kichik (tag) toifalarni o‘z ichiga oladi. Bunday struktura odatda koeffitsiyentlar ichida koeffitsiyentlarni aks ettirish uchun qo‘llanadi.

Matplotlibʼdagi doiraviy diagrammaga misol.

  • Chiziqli grafik — ma’lumotlarning vizual ifodalanishi. Unda ma’lumotlar nuqtalari chiziqlar bilan birlashtiriladi. U odatda biror o‘zgaruvchi qiymatining boshqa o‘zgaruvchi, masalan, vaqtga nisbatan o‘zgarishini aks ettirish uchun ishlatiladi. Chiziqli grafiklar, xususan, trendlar yoki qimmatli qog‘ozlar narxlarining o‘zgarishini tahlil qilish uchun qulay hisoblanadi.

Matplotlibʼdagi chiziqli grafikka misol.

  • 3D grafika — kompyuter grafikasi yordamida uch o‘lchamli obyekt va sahnalarni vizualizatsiya qilish usuli. Bunday grafiklar, masalan, realistik personajlar va atrof-muhitni, obyektlarni vizualizatsiya qilish uchun mos keladi.

Matplotlibʼdagi 3D grafikaga misol.


Matplotlib asoslari va unda ish boshlash

Matplotlib’ni Python’dagi Matplotlib kutubxonasining moduli bo‘lgan Pyplot paketi bilan birga o‘rnatish kerak. U grafiklar tarkibiga turli komponentlarni uzun kodlardan foydalanmasdan joylashtirishda yordam beradi. Masalan, belgi, chiziq, nuqta va boshqalarni yaratish mumkin. Kodda Pyplot matplotlib.pyplot koʻrinishida aks etadi.

Ba’zi dasturlarda Matplotlib va Pyplot standart ravishda o‘rnatilgan. Masalan, Google Colab va Jupyter Notebook’da kutubxona hamda modul mavjud. Boshqa dasturlarda esa Matplotlib va Pyplotʼni import qilish uchun qisqa buyruqlar bor:

  • pip3 install matplotlib — Matplotlib importi.

  • import matplotlib.pyplot as plt — Pyplot importi.

Grafiklarni sozlash

Sochma, ustunsimon va doiraviy diagrammalar, chiziqli, 3D grafiklar sozlamalarini ko‘rib chiqamiz.

  • Sochma diagramma. Misol uchun, X va Y koordinatali, nuqtalar ko‘k rangda tasvirlanadigan sochma diagramma yaratamiz.

import matplotlib.pyplot as plt
 
x = [5, 7, 8, 7, 2, 17, 2, 9,
       4, 11, 12, 9, 6]
 
y = [99, 86, 87, 88, 100, 86,
       103, 87, 94, 78, 77, 85, 86]
 
plt.scatter(x, y, c ="blue")
 
# To show the plot
plt.show()

Natija

  • Ustunli diagramma. Misol tariqasida do‘konning beshta filialida sotilgan mahsulotlar miqdori diagrammasini yaratamiz: A (23 dona), B (45 dona), C (12 dona), D (67 dona), E (34 dona). Kod quyidagicha bo‘ladi:

categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 12, 67, 34]

plt.bar(categories, values)
plt.show()

Natija

  • Doiraviy diagramma. Avtomobil markalari [AUDI, BMW, FORD, TESLA, JAGUAR, MERCEDES] bilan diagramma tuzamiz. Har bir marka diagrammada o‘z ulushiga ega: [23, 17, 35, 29, 12, 41]. Kod quyidagicha bo‘ladi:

cars = ['AUDI', 'BMW', 'FORD',
               'TESLA', 'JAGUAR', 'MERCEDES']

data = [23, 17, 35, 29, 12, 41]

fig = plt.figure(figsize=(10, 7))
plt.pie(data, labels=cars)

plt.show()

Avtomobil markalari aks etgan doiraviy diagramma shunday ko‘rinishga ega boʻladi.

  • Chiziqli grafik. Misol tariqasida y = f(x) funksiyani vizualizatsiya qilamiz, bunda x = 0, 10, 1000. Kod quyidagicha bo‘ladi:

fig = plt.figure()
ax = plt.axes()

x = np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x));

Funksiyaning chiziqli grafigi shunday ko‘rinishda bo‘ladi.

  • 3D grafik. Misol tariqasida 3D formatda prujina yaratib ko‘ramiz. Buning uchun mplot3d vositalar to‘plamini import qilishimiz kerak. So‘ngra koordinata o‘qlari, to‘r va belgilarni sozlaymiz. Kod quyidagicha bo‘ladi:

import numpy as np
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
plt.style.use('seaborn-poster')
fig = plt.figure(figsize = (10,10))
ax = plt.axes(projection='3d')
plt.show()
fig = plt.figure(figsize = (8,8))
ax = plt.axes(projection='3d')
ax.grid()
t = np.arange(0, 10*np.pi, np.pi/50)
x = np.sin(t)
y = np.cos(t)

ax.plot3D(x, y, t)
ax.set_title('3D Parametric Plot')

ax.set_xlabel('x', labelpad=20)
ax.set_ylabel('y', labelpad=20)
ax.set_zlabel('t', labelpad=20)

plt.show()

Matplotlib kutubxonasi yordamida yaratilgan 3D shakl namunasi.

Qo‘llashga misollar

Misollar orqali kutubxona imkoniyatlaridan foydalanishni ko‘rib chiqamiz: sarlavha, o‘q va belgilarni yaratish, elementlarning qismlari yoki ular orasidagi masofani o‘zgartirish, uch o‘lchamli modellar.

  • Sarlavha va o‘q belgilariga ega sochma diagramma. Diagrammani Matplotlib hamda x va y koordinatalar, ranglar, o‘lchamlar uchun tasodifiy ma’lumotlarni generatsiya qiladigan NumPy yordamida hosil qilamiz. Xususiyatlari: rang, o‘lcham, shaffoflik va rang xaritasini sozlaymiz. Grafik sarlavha, o‘qlar belgilari va rang intensivligi shkalasidan iborat boʻladi.

# NumPy importi.

import numpy as np

# Tasodifiy ma’lumotlarni generatsiya qilish.

x = np.random.rand(50)— х (случайное число в пределах 50).
y = np.random.rand(50)— у (случайное число в пределах 50).
colors = np.random.rand(50)
sizes = 100 * np.random.rand(50)
 
plt.scatter(x, y, c=colors, s=sizes, alpha=0.7, cmap='viridis')

# Sarlavha va o‘q belgilari.

plt.title("Customized Scatter Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Rang intensivligi shkalasini aks ettirish.

plt.colorbar(label='Color Intensity')

# Natija.

plt.show()

Natija

  • Ustunlar orasidagi masofani formatlash imkoniyatiga ega bo‘lgan ustunsimon diagramma. Buning uchun plt.bar funksiyasiga kengligini (width) qo‘shish kerak. Aytaylik, ustunlar orasidagi kenglik 0,5 ga teng bo‘lsin. Kod quyidagicha bo‘ladi:

categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 12, 67, 34]

plt.bar(categories, values, width=0.5)
plt.show()

Formatlashdan oldin

Formatlashdan keyin

  • Sarlavha va o‘q belgilariga ega chiziqli grafik. Sarlavha va o‘qlarni tezda qo‘shish uchun quyidagi koddan foydalanamiz:

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)");

Sarlavhali chiziqli grafikka misol.

  • Uch o‘lchamli sochma diagramma. Misol tariqasida o‘zgaruvchilarni yozamiz: x, y va z uchun berilgan nuqtalar 50 ta; rang — qizil. Kod quyidagicha bo‘ladi:

x = np.random.random(50)
y = np.random.random(50)
z = np.random.random(50)

fig = plt.figure(figsize = (10,10))
ax = plt.axes(projection='3d')
ax.grid()

ax.scatter(x, y, z, c = 'r', s = 50)
ax.set_title('3D Scatter Plot')

# Set axes label
ax.set_xlabel('x', labelpad=20)
ax.set_ylabel('y', labelpad=20)
ax.set_zlabel('z', labelpad=20)

plt.show()

Uch o‘lchovli sochma diagramma yaratishga misol.

  • Bir nechta ma’lumotlar to‘plamiga ega sochma diagramma. Misol tariqasida har biri o‘z x va y koordinatalar to‘plamiga ega ikkita turli xil ma’lumotlar to‘plamini olamiz:

  1. x1 = [89, 43, 36, 36, 95, 10, 66, 34, 38, 20]; y1 = [21, 46, 3, 35, 67, 95, 53, 72, 58, 10].

  2. x2 = [26, 29, 48, 64, 6, 5, 36, 66, 72, 40]; y2 = [26, 34, 90, 33, 38,20, 56, 2, 47, 15].

x1 = [89, 43, 36, 36, 95, 10,
         66, 34, 38, 20]
 
y1 = [21, 46, 3, 35, 67, 95,
         53, 72, 58, 10]

x2 = [26, 29, 48, 64, 6, 5,
         36, 66, 72, 40]
 
y2 = [26, 34, 90, 33, 38,
         20, 56, 2, 47, 15]
 
plt.scatter(x1, y1, c ="pink",
                    linewidths = 2,
                    marker ="s",
                    edgecolor ="green",
                    s = 50)
 
plt.scatter(x2, y2, c ="yellow",
                    linewidths = 2,
                    marker ="^",
                    edgecolor ="red",
                    s = 200)
 
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

Bir nechta ma’lumotlar to‘plamiga ega sochma diagramma



Manba: Библиотека Matplotlib для построения графиков, диаграмм и 3D-моделей

Mohirdev Telegram

Telegram kanalimizga obuna bo’lishni unutmang

Obuna bo'lish
https://mohirdevbucket.s3.eu-central-1.amazonaws.com/practicum/images/51376cbb-4bcc-4fd9-a79f-bdde293c182f.original.png

Yandex Praktikum