Matplotlib nuqtali diagramma (scatter)
Tarqalgan chizmalarni yaratish
Pyplot yordamida siz scatter() funksiyasidan scatter chizmasini chizishingiz mumkin.
scatter() funksiyasi har bir kuzatish uchun bitta nuqta chizadi. Unga bir xil uzunlikdagi ikkita massiv kerak bo‘ladi, biri x o‘qi qiymatlari uchun, ikkinchisi esa y o‘qidagi qiymatlar uchun:
Misol
Oddiy nuqtali diagramma (scatter plot):
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
plt.show()
Natija:

Yuqoridagi misoldagi kuzatuv 13 ta mashinaning o‘tib ketishi natijasidir.
X o‘qi mashinaning qancha eski ekanligini ko‘rsatadi.
Y o‘qi avtomobilning o‘tayotganda tezligini ko‘rsatadi.
Kuzatishlar o‘rtasida bog‘liqlik bormi?
Aftidan, mashina qanchalik yangi bo‘lsa, u shunchalik tez haydaydi, ammo bu tasodif bo‘lishi mumkin, axir biz atigi 13 ta mashinani ro‘yxatdan o‘tkazdik.
Plotlarni solishtiring
Yuqoridagi misolda tezlik va yosh o‘rtasida bog‘liqlik borga o‘xshaydi, ammo kuzatuvlarni boshqa kundan boshlab ham chizsak nima bo‘ladi? Tarqalish syujeti bizga yana bir narsani aytib beradimi?
Misol
Xuddi shu rasmga ikkita chizma chizing:
import matplotlib.pyplot as plt
import numpy as np
#day one, the age and speed of 13 cars:
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
#day two, the age and speed of 15 cars:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y)
plt.show()
Natija:

Eslatma: Ikki syujet ikki xil rangda chizilgan, sukut bo‘yicha ko‘k va to‘q sariq, ranglarni qanday o‘zgartirishni keyinroq ushbu bobda bilib olasiz.
Ikki syujetni solishtirib, shuni aytish mumkinki, ularning ikkalasi ham bir xil xulosaga keladi: mashina qanchalik yangi bo‘lsa, u shunchalik tez haydaydi.
Ranglar
coloryoki c argumenti bilan har bir tarqalish chizmasi uchun o‘zingizningcolorni o‘rnatishingiz mumkin:
Misol
Markerlarning o‘z rangini o‘rnating:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')
plt.show()
Natija:
Har bir nuqtani ranglang
Siz hatto c argumenti uchun qiymat sifatida ranglar massividan foydalanib, har bir nuqta uchun ma’lum rangni o‘rnatishingiz mumkin:
Eslatma: Buning uchuncolorargumentidan foydalana olmaysiz, faqat c argumenti.
Misol
Markerlarning o‘z rangini o‘rnating:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
Natija:
Rang xaritasi
Matplotlib modulida bir qator mavjud rang xaritalari mavjud.
Rang xaritasi ranglar ro‘yxatiga o‘xshaydi, bu yerda har bir rang 0 dan 100 gacha bo‘lgan qiymatga ega.
Mana rang xaritasiga misol:
Ushbu rang xaritasi "viridis" deb ataladi va siz ko‘rib turganingizdek, u binafsha rang bo‘lgan 0 dan 100 gacha sariq rangga ega.
ColorMap-dan qanday foydalanish kerak
Siz rang xaritasinicmapkalit so‘zi bilan rang xaritasining qiymati bilan belgilashingiz mumkin, bu holda 'viridis' Matplotlib-da mavjud bo‘lgan ichki rang xaritalaridan biri.
Bundan tashqari, siz (0 dan 100 gacha) qiymatlari bo‘lgan massivni yaratishingiz kerak, tarqalish chizmasidagi har bir nuqta uchun bitta qiymat:
Misol
Ranglar massivi yarating va tarqalish chizmasida rang xaritasini belgilang:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.show()
Natija:
plt.colorbar() operatorini qo‘shish orqali siz rang xaritasini chizmaga kiritishingiz mumkin:
Misol
Haqiqiy rang xaritasini qo‘shing:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()
Natija:
Rangli xaritalar mavjud
Siz o‘rnatilgan rang xaritalaridan birini tanlashingiz mumkin:
| Name | Reverse | |||
|---|---|---|---|---|
| Accent | Try it » | Accent_r | Try it » | |
| Blues | Try it » | Blues_r | Try it » | |
| BrBG | Try it » | BrBG_r | Try it » | |
| BuGn | Try it » | BuGn_r | Try it » | |
| BuPu | Try it » | BuPu_r | Try it » | |
| CMRmap | Try it » | CMRmap_r | Try it » | |
| Dark2 | Try it » | Dark2_r | Try it » | |
| GnBu | Try it » | GnBu_r | Try it » | |
| Greens | Try it » | Greens_r | Try it » | |
| Greys | Try it » | Greys_r | Try it » | |
| OrRd | Try it » | OrRd_r | Try it » | |
| Oranges | Try it » | Oranges_r | Try it » | |
| PRGn | Try it » | PRGn_r | Try it » | |
| Paired | Try it » | Paired_r | Try it » | |
| Pastel1 | Try it » | Pastel1_r | Try it » | |
| Pastel2 | Try it » | Pastel2_r | Try it » | |
| PiYG | Try it » | PiYG_r | Try it » | |
| PuBu | Try it » | PuBu_r | Try it » | |
| PuBuGn | Try it » | PuBuGn_r | Try it » | |
| PuOr | Try it » | PuOr_r | Try it » | |
| PuRd | Try it » | PuRd_r | Try it » | |
| Purples | Try it » | Purples_r | Try it » | |
| RdBu | Try it » | RdBu_r | Try it » | |
| RdGy | Try it » | RdGy_r | Try it » | |
| RdPu | Try it » | RdPu_r | Try it » | |
| RdYlBu | Try it » | RdYlBu_r | Try it » | |
| RdYlGn | Try it » | RdYlGn_r | Try it » | |
| Reds | Try it » | Reds_r | Try it » | |
| Set1 | Try it » | Set1_r | Try it » | |
| Set2 | Try it » | Set2_r | Try it » | |
| Set3 | Try it » | Set3_r | Try it » | |
| Spectral | Try it » | Spectral_r | Try it » | |
| Wistia | Try it » | Wistia_r | Try it » | |
| YlGn | Try it » | YlGn_r | Try it » | |
| YlGnBu | Try it » | YlGnBu_r | Try it » | |
| YlOrBr | Try it » | YlOrBr_r | Try it » | |
| YlOrRd | Try it » | YlOrRd_r | Try it » | |
| afmhot | Try it » | afmhot_r | Try it » | |
| autumn | Try it » | autumn_r | Try it » | |
| binary | Try it » | binary_r | Try it » | |
| bone | Try it » | bone_r | Try it » | |
| brg | Try it » | brg_r | Try it » | |
| bwr | Try it » | bwr_r | Try it » | |
| cividis | Try it » | cividis_r | Try it » | |
| cool | Try it » | cool_r | Try it » | |
| coolwarm | Try it » | coolwarm_r | Try it » | |
| copper | Try it » | copper_r | Try it » | |
| cubehelix | Try it » | cubehelix_r | Try it » | |
| flag | Try it » | flag_r | Try it » | |
| gist_earth | Try it » | gist_earth_r | Try it » | |
| gist_gray | Try it » | gist_gray_r | Try it » | |
| gist_heat | Try it » | gist_heat_r | Try it » | |
| gist_ncar | Try it » | gist_ncar_r | Try it » | |
| gist_rainbow | Try it » | gist_rainbow_r | Try it » | |
| gist_stern | Try it » | gist_stern_r | Try it » | |
| gist_yarg | Try it » | gist_yarg_r | Try it » | |
| gnuplot | Try it » | gnuplot_r | Try it » | |
| gnuplot2 | Try it » | gnuplot2_r | Try it » | |
| gray | Try it » | gray_r | Try it » | |
| hot | Try it » | hot_r | Try it » | |
| hsv | Try it » | hsv_r | Try it » | |
| inferno | Try it » | inferno_r | Try it » | |
| jet | Try it » | jet_r | Try it » | |
| magma | Try it » | magma_r | Try it » | |
| nipy_spectral | Try it » | nipy_spectral_r | Try it » | |
| ocean | Try it » | ocean_r | Try it » | |
| pink | Try it » | pink_r | Try it » | |
| plasma | Try it » | plasma_r | Try it » | |
| prism | Try it » | prism_r | Try it » | |
| rainbow | Try it » | rainbow_r | Try it » | |
| seismic | Try it » | seismic_r | Try it » | |
| spring | Try it » | spring_r | Try it » | |
| summer | Try it » | summer_r | Try it » | |
| tab10 | Try it » | tab10_r | Try it » | |
| tab20 | Try it » | tab20_r | Try it » | |
| tab20b | Try it » | tab20b_r | Try it » | |
| tab20c | Try it » | tab20c_r | Try it » | |
| terrain | Try it » | terrain_r | Try it » | |
| twilight | Try it » | twilight_r | Try it » | |
| twilight_shifted | Try it » | twilight_shifted_r | Try it » | |
| viridis | Try it » | viridis_r | Try it » | |
| winter | Try it » | winter_r | Try it » |
Hajmi
s argumenti yordamida nuqtalar hajmini o‘zgartirishingiz mumkin.
Ranglar singari, o‘lchamlar uchun massiv x va y o‘qlari uchun massivlar bilan bir xil uzunlikka ega ekanligiga ishonch hosil qiling:
Misol
Belgilar uchun o‘zingizning o‘lchamingizni belgilang:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes)
plt.show()
Natija:
Alfa
alphaargumenti yordamida nuqtalarning shaffofligini sozlashingiz mumkin.
Ranglar singari, o‘lchamlar uchun massiv x va y o‘qlari uchun massivlar bilan bir xil uzunlikka ega ekanligiga ishonch hosil qiling:
Misol
Belgilar uchun o‘zingizning o‘lchamingizni belgilang:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x, y, s=sizes, alpha=0.5)
plt.show()
Natija:
Rang hajmi va alfani birlashtiring
Rang xaritasini turli o‘lchamdagi nuqtalar bilan birlashtira olasiz. Agar nuqta shaffof bo‘lsa, buni eng yaxshi ko‘rish mumkin:
Misol
X nuqtalari, y nuqtalari, ranglari va o‘lchamlari uchun 100 ta qiymatga ega tasodifiy massivlarni yarating:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100, size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()
Natija:
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
