Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Matplotlib asoslari (fig, ax)
- 2.2. Chiziq grafik (plot)
- 2.3. Ustun grafik (bar)
- 2.4. Soch va gistogramma
- 2.5. Grafikni bezash
- 2.6. Bir necha grafik (subplots)
- 2.7. Saqlash va pandas integratsiya
- 2.8. Yaxshi vizualizatsiya
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Chiziq grafik (trend)
- Misol 2 — Ustun va soch grafik
- Misol 3 — Gistogramma va subplots
- Misol 4 — Amaliy: hisobot grafigi (saqlash)
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
24.13-dars: Matplotlib
24-QISM — MA'LUMOT TAHLILI · 13-dars
1. Kirish va motivatsiya
Shu paytgacha (24.1–24.12) ma'lumotni sonlar bilan tahlil qildik. Lekin inson miyasi rasmni sondan tez tushunadi. 1000 qatorli jadvalda trend ko'rinmaydi, lekin grafikda bir qarashda: o'smoqdami, tushmoqdami, qaysi kategoriya katta. "Bir rasm ming so'zga arziydi" — ma'lumot vizualizatsiyasi tahlilning muhim qismi.
Matplotlib — Python'ning asosiy vizualizatsiya kutubxonasi (grafik chizish). U bilan: chiziq grafik (trend — vaqt bo'yicha), ustun grafik (taqqoslash — kategoriyalar), soch grafik (scatter — bog'lanish), gistogramma (taqsimot), doiraviy (ulush). fig, ax = plt.subplots() — grafik yaratish, ax.plot() — chizish, ax.set_xlabel() — belgilash. pandas bilan integratsiya (df.plot()). Vizualizatsiya — ma'lumotni ko'z bilan ko'rish va boshqalarga tushuntirish.
Real vaziyat. Bir hisobotda 12 oylik sotuv jadvali bor edi — raqamlarga qarab trend tushunib bo'lmasdi. Chiziq grafik (df.plot()) chizildi — o'sish aniq ko'rindi (yozda tushish, dekabrda cho'qqi). Bir grafik 12 raqamdan ko'proq ma'no berdi. Vizualizatsiya — ma'lumotdan xulosani ko'rsatishning eng kuchli usuli.
Bu darsda Matplotlib bilan grafik chizishni o'rganamiz.
Bu darsda:
- Matplotlib asoslari (
fig,ax) - Chiziq grafik (
plot) - Ustun grafik (
bar) - Soch va gistogramma (
scatter,hist) - Grafikni bezash (label, title, legend)
- Bir necha grafik (
subplots) - Saqlash (
savefig) - Amaliy: hisobot grafigi
ℹ Misollarda Matplotlib (
Aggbackend — fayl uchun) bilan sinaladi; grafik xususiyatlari (chiziq soni, belgi) tekshiriladi.
2. Nazariya — chuqur tushuntirish
2.1. Matplotlib asoslari (fig, ax)
Grafik ikki qismdan iborat:
import matplotlib.pyplot as plt
fig, ax = plt.subplots() # figure (rasm) + axes (o'qlar)
ax.plot([1, 2, 3], [10, 20, 15])
plt.show() # ko'rsatish (yoki savefig) Matplotlib tuzilishi: figure (fig — butun rasm, tuval) va axes (ax — bitta grafik maydoni, o'qlar). fig, ax = plt.subplots() — ikkalasini yaratadi. ax.plot(...) — grafikga chizish, ax.set_...() — belgilash. Bu obyektga yo'naltirilgan uslub (tavsiya qilinadigan). plt.show() (ko'rsatish) yoki fig.savefig() (saqlash). Grafik — fig ustida ax(lar).
2.2. Chiziq grafik (plot)
Trend uchun chiziq:
ax.plot(x, y) # oddiy chiziq
ax.plot(x, y, marker="o") # nuqtali
ax.plot(x, y, color="red", linestyle="--") # rang, uslub
ax.plot(x, y1, label="A") # ko'p chiziq
ax.plot(x, y2, label="B") Chiziq grafik (ax.plot(x, y)) — trend uchun (vaqt bo'yicha o'zgarish — sotuv, narx, harorat): nuqtalarni chiziq bilan bog'laydi. marker="o" (nuqtalar), color, linestyle="--" (uzuq), label (nom — legend uchun). Bir necha plot — bir necha chiziq (taqqoslash). Vaqt qatori 24.11-bob uchun ideal. Eng ko'p ishlatiladigan grafik turi.
2.3. Ustun grafik (bar)
Kategoriyalarni taqqoslash:
ax.bar(kategoriyalar, qiymatlar) # vertikal ustun
ax.barh(kategoriyalar, qiymatlar) # gorizontal
ax.bar(x, y, color="green") # rang Ustun grafik (ax.bar(kategoriyalar, qiymatlar)) — kategoriyalarni taqqoslash (har mahsulot sotuvi, har til soni): har kategoriya — ustun (balandlik = qiymat). barh (gorizontal — ko'p yoki uzun nomli kategoriya uchun). Diskret toifalar (chiziq — uzluksiz vaqt uchun). Taqqoslash uchun eng aniq grafik (qaysi katta ko'rinadi).
2.4. Soch va gistogramma
Bog'lanish va taqsimot:
ax.scatter(x, y) # soch grafik (ikki o'zgaruvchi bog'lanishi)
ax.hist(data, bins=20) # gistogramma (taqsimot)
ax.boxplot(data) # quti grafik (kvartil) Soch grafik (ax.scatter(x, y)) — ikki o'zgaruvchi bog'lanishi (narx va sotuv — korrelyatsiya bormi). Gistogramma (ax.hist(data, bins=20)) — bir o'zgaruvchi taqsimoti (qiymatlar qanday tarqalgan — normal, egri). Quti grafik (boxplot) — kvartil, chetlanish 24.16-bob. Har biri boshqa savol: bog'lanish (scatter), taqsimot (hist). Ma'lumot shaklini ko'rish.
2.5. Grafikni bezash
O'qiluvchan grafik:
ax.set_xlabel("Oy") # X o'q nomi
ax.set_ylabel("Sotuv") # Y o'q nomi
ax.set_title("2024 sotuvi") # sarlavha
ax.legend() # izoh (label'lar)
ax.grid(True) # to'r Grafikni bezash (muhim — belgisiz grafik tushunarsiz): ax.set_xlabel/set_ylabel (o'q nomlari — nima o'lchanadi), ax.set_title (sarlavha), ax.legend() (izoh — label bilan chizilgan chiziqlarni ko'rsatadi), ax.grid(True) (to'r — o'qish oson). Yaxshi grafik: o'qlar nomlangan, sarlavha bor, birlik ko'rsatilgan. "Belgisiz grafik — ma'nosiz".
2.6. Bir necha grafik (subplots)
Bir rasmda bir necha grafik:
fig, axes = plt.subplots(1, 2) # 1 qator, 2 ustun
axes[0].plot(x, y1) # birinchi
axes[1].bar(kat, y2) # ikkinchi
fig, axes = plt.subplots(2, 2) # 2×2 to'r
fig.tight_layout() # joylashuvni to'g'rila subplots(qator, ustun) — bir rasmda bir necha grafik (yonma-yon taqqoslash, dashboard): fig, axes = plt.subplots(1, 2) — ikki grafik (axes[0], axes[1]). fig.tight_layout() — grafiklar ustma-ust tushmasligi uchun. Bu bir necha ko'rinishni (trend + taqsimot) bir joyda ko'rsatishda foydali. Hisobot, dashboard uchun.
2.7. Saqlash va pandas integratsiya
Grafikni fayl va pandas:
fig.savefig("grafik.png", dpi=150) # rasmga saqla
fig.savefig("grafik.pdf") # PDF
# pandas to'g'ridan:
df.plot(kind="line") # DataFrame'dan
df["narx"].plot(kind="bar")
df.plot.scatter(x="narx", y="sotuv") fig.savefig(fayl) — grafikni rasmga (PNG, PDF, SVG — dpi sifat). pandas integratsiya: df.plot(kind="line") (DataFrame'dan to'g'ridan — Matplotlib ustida), df["narx"].plot(kind="bar"), df.plot.scatter(...). pandas .plot() — tez (Matplotlib avtomatik). Hisobot uchun grafikni saqlash (email, hujjat). Tez tahlil uchun df.plot().
2.8. Yaxshi vizualizatsiya
Yaxshi vizualizatsiya tamoyillari: to'g'ri grafik turi (trend → chiziq, taqqoslash → ustun, bog'lanish → scatter, taqsimot → hist), belgilangan (o'q nomlari, sarlavha, birlik), sodda (ortiqcha bezak emas — ma'lumot asosiy), halol (o'q 0'dan, cho'zmagan). "Ma'lumot hikoyasini ayt" — grafik xulosani ko'rsatishi kerak. Noto'g'ri grafik (yoki chalg'ituvchi) — noto'g'ri xulosa. Vizualizatsiya — tahlil natijasini yetkazish.
3. Tez ma'lumotnoma
import matplotlib.pyplot as plt
# asos:
fig, ax = plt.subplots()
# grafik turlari:
ax.plot(x, y, marker="o", label="A") # chiziq (trend)
ax.bar(kategoriyalar, qiymatlar) # ustun (taqqoslash)
ax.scatter(x, y) # soch (bog'lanish)
ax.hist(data, bins=20) # gistogramma (taqsimot)
# bezash:
ax.set_xlabel("X"); ax.set_ylabel("Y")
ax.set_title("Sarlavha")
ax.legend(); ax.grid(True)
# bir necha grafik:
fig, axes = plt.subplots(1, 2)
axes[0].plot(...); axes[1].bar(...)
fig.tight_layout()
# saqlash:
fig.savefig("grafik.png", dpi=150)
# pandas:
df.plot(kind="line")
df["narx"].plot(kind="bar")Matplotlib xulosasi
fig+ax: figure + axes · plot(chiziq)/bar(ustun)/scatter/hist
set_xlabel/title/legend: bezash · subplots: ko'p grafik
savefig: saqla · df.plot(): pandas · to'g'ri tur + belgi4. Batafsil misollar
Misollarda Matplotlib (
Aggbackend — ekransiz, fayl uchun) bilan sinaladi. Grafik xususiyatlari (chiziq soni, o'q nomlari, saqlangan fayl) tekshiriladi (rasm emas).
Misol 1 — Chiziq grafik (trend)
"""chiziq grafik: ax.plot (trend); marker; label; bezash (xlabel/title/legend)."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
def main() -> None:
oylar = [1, 2, 3, 4, 5, 6]
sotuv = [100, 120, 90, 150, 130, 180]
fig, ax = plt.subplots()
print("=== 1. plot (chiziq chizish) ===")
ax.plot(oylar, sotuv, marker="o", label="2024")
print(f" chiziqlar soni: {len(ax.lines)}")
print("\n=== 2. Ikkinchi chiziq ===")
sotuv2 = [80, 100, 110, 120, 140, 160]
ax.plot(oylar, sotuv2, marker="s", label="2023")
print(f" chiziqlar soni: {len(ax.lines)}")
print("\n=== 3. Bezash (label, title) ===")
ax.set_xlabel("Oy")
ax.set_ylabel("Sotuv")
ax.set_title("Oylik sotuv")
ax.legend()
print(f" xlabel: {ax.get_xlabel()}, ylabel: {ax.get_ylabel()}")
print(f" title: {ax.get_title()}")
print("\n=== 4. Legend (izoh) ===")
print(f" legend labellar: {[t.get_text() for t in ax.get_legend().get_texts()]}")
plt.close(fig)
print(" ⭐ plot — trend grafigi (chiziq, bezash, legend)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. plot (chiziq chizish) ===
chiziqlar soni: 1
=== 2. Ikkinchi chiziq ===
chiziqlar soni: 2
=== 3. Bezash (label, title) ===
xlabel: Oy, ylabel: Sotuv
title: Oylik sotuv
=== 4. Legend (izoh) ===
legend labellar: ['2024', '2023']
⭐ plot — trend grafigi (chiziq, bezash, legend)Nima ko'rsatdi: 2.1, 2.2, 2.5-bo'limlar.
Misol 2 — Ustun va soch grafik
"""ustun grafik (bar — taqqoslash); soch grafik (scatter — bog'lanish); patch/collection soni."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
def main() -> None:
print("=== 1. bar (ustun — kategoriya taqqoslash) ===")
fig, ax = plt.subplots()
kategoriyalar = ["Python", "Go", "Rust", "PHP"]
sotuv = [50, 30, 20, 40]
ax.bar(kategoriyalar, sotuv, color="steelblue")
print(f" ustunlar soni: {len(ax.patches)}")
print("\n=== 2. bar bezash ===")
ax.set_ylabel("Sotuv")
ax.set_title("Mahsulot bo'yicha sotuv")
print(f" title: {ax.get_title()}")
plt.close(fig)
print("\n=== 3. scatter (soch — bog'lanish) ===")
fig2, ax2 = plt.subplots()
narx = [100, 120, 80, 150, 90]
sotildi = [50, 40, 60, 30, 55]
ax2.scatter(narx, sotildi)
print(f" scatter to'plamlari: {len(ax2.collections)}")
print("\n=== 4. scatter bezash ===")
ax2.set_xlabel("Narx")
ax2.set_ylabel("Sotildi")
print(f" xlabel: {ax2.get_xlabel()}, ylabel: {ax2.get_ylabel()}")
plt.close(fig2)
print(" ⭐ bar (taqqoslash), scatter (bog'lanish)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. bar (ustun — kategoriya taqqoslash) ===
ustunlar soni: 4
=== 2. bar bezash ===
title: Mahsulot bo'yicha sotuv
=== 3. scatter (soch — bog'lanish) ===
scatter to'plamlari: 1
=== 4. scatter bezash ===
xlabel: Narx, ylabel: Sotildi
⭐ bar (taqqoslash), scatter (bog'lanish)Nima ko'rsatdi: 2.3, 2.4-bo'limlar.
Misol 3 — Gistogramma va subplots
"""gistogramma (hist — taqsimot); subplots (bir necha grafik); tight_layout."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
def main() -> None:
print("=== 1. hist (gistogramma — taqsimot) ===")
fig, ax = plt.subplots()
baholar = [65, 70, 72, 80, 85, 88, 90, 75, 68, 82, 78, 95]
n, bins, patches = ax.hist(baholar, bins=5)
print(f" ustunlar (bins): {len(patches)}")
print(f" har bin soni: {[int(x) for x in n]}")
print("\n=== 2. hist bezash ===")
ax.set_xlabel("Baho")
ax.set_ylabel("Talabalar soni")
ax.set_title("Baholar taqsimoti")
print(f" title: {ax.get_title()}")
plt.close(fig)
print("\n=== 3. subplots (1×2) ===")
fig2, axes = plt.subplots(1, 2)
axes[0].plot([1, 2, 3], [10, 20, 15])
axes[1].bar(["a", "b", "c"], [3, 5, 2])
print(f" grafiklar soni: {len(axes)}")
print(f" 1-grafik chiziqlar: {len(axes[0].lines)}, 2-grafik ustunlar: {len(axes[1].patches)}")
print("\n=== 4. tight_layout ===")
fig2.tight_layout()
print(" joylashuv to'g'rilandi")
plt.close(fig2)
print(" ⭐ hist (taqsimot), subplots (bir necha grafik)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. hist (gistogramma — taqsimot) ===
ustunlar (bins): 5
har bin soni: [3, 2, 3, 2, 2]
=== 2. hist bezash ===
title: Baholar taqsimoti
=== 3. subplots (1×2) ===
grafiklar soni: 2
1-grafik chiziqlar: 1, 2-grafik ustunlar: 3
=== 4. tight_layout ===
joylashuv to'g'rilandi
⭐ hist (taqsimot), subplots (bir necha grafik)Nima ko'rsatdi: 2.4, 2.6-bo'limlar.
Misol 4 — Amaliy: hisobot grafigi (saqlash)
Real misol: sotuv ma'lumoti — chiziq (trend) + ustun (kategoriya) grafiklari, bezash, faylga saqlash. Bu — hisobot vizualizatsiyasining namunasi.
"""to'liq hisobot grafigi: subplots (trend + kategoriya), bezash, savefig (faylga saqlash)."""
import warnings
warnings.filterwarnings("ignore")
import os
import tempfile
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
def main() -> None:
oylar = [1, 2, 3, 4, 5, 6]
sotuv = [100, 120, 90, 150, 130, 180]
kategoriyalar = ["Kurs", "Kitob", "Video"]
kat_sotuv = [300, 150, 200]
print("=== 1. Ikki grafik (subplots) ===")
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
axes[0].plot(oylar, sotuv, marker="o", color="steelblue")
axes[1].bar(kategoriyalar, kat_sotuv, color="coral")
print(f" grafiklar: {len(axes)}")
print("\n=== 2. Trend grafigini bezash ===")
axes[0].set_xlabel("Oy")
axes[0].set_ylabel("Sotuv")
axes[0].set_title("Oylik trend")
axes[0].grid(True)
print(f" trend title: {axes[0].get_title()}")
print("\n=== 3. Kategoriya grafigini bezash ===")
axes[1].set_ylabel("Jami sotuv")
axes[1].set_title("Kategoriya bo'yicha")
print(f" kat title: {axes[1].get_title()}, ustunlar: {len(axes[1].patches)}")
print("\n=== 4. Faylga saqlash (savefig) ===")
fig.tight_layout()
yol = os.path.join(tempfile.mkdtemp(), "hisobot.png")
fig.savefig(yol, dpi=100)
print(f" saqlandi: {os.path.exists(yol)}")
print(f" fayl bo'sh emas: {os.path.getsize(yol) > 0}")
plt.close(fig)
print(" ⭐ subplots + bezash + savefig — hisobot grafigi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Ikki grafik (subplots) ===
grafiklar: 2
=== 2. Trend grafigini bezash ===
trend title: Oylik trend
=== 3. Kategoriya grafigini bezash ===
kat title: Kategoriya bo'yicha, ustunlar: 3
=== 4. Faylga saqlash (savefig) ===
saqlandi: True
fayl bo'sh emas: True
⭐ subplots + bezash + savefig — hisobot grafigiNima ko'rsatdi: 2.1–2.8-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Har grafik bir xil" | Turi savolga qarab (trend/taqqoslash) |
| "Belgi keraksiz" | O'q nomi, sarlavha muhim |
"plt.plot yetarli" |
fig, ax (obyektga yo'naltirilgan) |
| "Chiziq kategoriya uchun" | Ustun (chiziq — vaqt) |
| "Ko'p bezak yaxshi" | Sodda (ma'lumot asosiy) |
| "Grafik doim halol" | O'q 0'dan (cho'zmagan) |
| "pandas grafik yo'q" | df.plot() (Matplotlib ustida) |
"show fayl saqlaydi" |
savefig saqlaydi |
6. Keng tarqalgan xatolar va yechimlari
1. Belgisiz grafik
ax.plot(x, y) # nima o'lchanadi? # ⚠️
ax.set_xlabel(...); ax.set_ylabel(...) # ✅2. Noto'g'ri grafik turi
ax.plot(kategoriyalar, y) # kategoriya chiziq # ⚠️
ax.bar(kategoriyalar, y) # ✅3. legendsiz ko'p chiziq
ax.plot(x, y1); ax.plot(x, y2) # qaysi qaysi? # ⚠️
ax.plot(x, y1, label="A"); ...; ax.legend() # ✅4. Grafiklar ustma-ust (subplots)
fig, axes = plt.subplots(2, 2) # ustma-ust # ⚠️
fig.tight_layout() # ✅5. Grafikni yopmaslik (xotira)
# ko'p grafik ochiq (xotira to'ladi) # ⚠️
plt.close(fig) # ✅6. savefig showdan keyin
plt.show(); fig.savefig(...) # bo'sh bo'lishi mumkin # ⚠️
fig.savefig(...); plt.show() # ✅7. O'q 0'dan boshlamaslik (chalg'ituvchi)
# bar grafikda y 50'dan boshlansa — farq kattaroq ko'rinadi # ⚠️
ax.set_ylim(0, ...) # 0'dan # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 24.5–24.11 (o'tilgan): pandas — grafik manbai
- 24.14-dars: Seaborn — Matplotlib ustida (chiroyli)
- 24.15-dars: Interaktiv vizualizatsiya
- 24.16-dars: Statistika — taqsimot grafigi
- 24.18-dars: Amaliy loyiha — hisobot
8. Eng yaxshi amaliyotlar
To'g'ri grafik turi (trend/taqqoslash/taqsimot).
Doim belgila (o'q nomi, sarlavha).
fig, ax(obyektga yo'naltirilgan).Ko'p chiziq —
legend.subplots—tight_layout.Grafikni yop (
plt.close).Halol grafik (o'q 0'dan).
Tez tahlil —
df.plot(); hisobot —savefig.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # Matplotlib nima?
2. # fig va ax nima?
3. # plot nima?
4. # bar nima?
5. # scatter nima?
6. # hist nima?
7. # set_xlabel nima?
8. # legend nima?
9. # subplots nima?
10. # savefig nima?
11. # df.plot nima?
12. # qaysi grafik trend uchun?Javoblar
- Vizualizatsiya kutubxonasi
- figure (rasm) + axes (o'qlar)
- Chiziq grafik (trend)
- Ustun grafik (taqqoslash)
- Soch grafik (bog'lanish)
- Gistogramma (taqsimot)
- X o'q nomi
- Izoh (label'lar)
- Bir necha grafik
- Faylga saqlash
- pandas'dan grafik
- Chiziq (plot)
Vazifa 2: Xatolarni tuzating
1. ax.plot(x, y) # belgisiz # set_xlabel
2. ax.plot(kat, y) # kategoriya # bar
3. ax.plot(x,y1); ax.plot(x,y2) # legend yo'q # label
4. plt.subplots(2,2) # ustma-ust # tight_layout
5. plt.show(); fig.savefig(...) # savefig avvalJavoblar
1. ax.set_xlabel(...); ax.set_ylabel(...)
2. ax.bar(kat, y)
3. ax.plot(x, y1, label="A"); ...; ax.legend()
4. fig.tight_layout()
5. fig.savefig(...); plt.show()Vazifa 3: Chiziq grafik
Trend:
plot- Ko'p chiziq
- Bezash
legend
Vazifa 4: Ustun/soch
Grafik:
barscatter- Bezash
- Rang
Vazifa 5: Gistogramma/subplots
Grafik:
histsubplotstight_layout- Yop
Vazifa 6: Hisobot
To'liq:
subplots- Bezash
savefig- pandas
.plot
Vazifa 7: O'ylash
Vizualizatsiya sonlarni rasmga aylantiradi — inson miyasi rasmni sondan tez tushunadi. Lekin grafik chalg'itishi ham mumkin (o'q 0'dan emas — farq kattaroq ko'rinadi). Nima uchun "to'g'ri grafik turi va halol ko'rsatish" muhim, va nega vizualizatsiya — "ma'lumot hikoyasini aytish" (tahlil natijasini yetkazish), lekin mas'uliyat bilan (chalg'itmasdan)?
Javob
Qisqa javob: Vizualizatsiya sonlarni rasmga aylantiradi — inson miyasi rasmni (naqsh, trend) sondan tez tushunadi (ming raqam vs bir grafik). Shuning uchun grafik — tahlil natijasini yetkazishning eng kuchli usuli ("ma'lumot hikoyasini ayt"). Lekin mas'uliyat bilan: grafik chalg'itishi mumkin (o'q 0'dan emas — kichik farq katta ko'rinadi; noto'g'ri tur — noto'g'ri xulosa). To'g'ri grafik turi (trend → chiziq, taqqoslash → ustun) va halol ko'rsatish (o'q 0'dan, cho'zmagan) muhim, chunki grafik ishonarli (odam rasmga ishonadi) — noto'g'ri grafik odamlarni noto'g'ri xulosaga olib keladi. "Kuch bilan mas'uliyat" — vizualizatsiya kuchli, shuning uchun halol bo'lishi kerak.
1. Nega rasm tez tushuniladi
Inson miyasi vizual (naqsh, trend, farq — bir qarashda). Sonlar — ketma-ket o'qish (sekin). 12 oylik trend: raqamlar (o'ylash kerak) vs grafik (darrov ko'rinadi).
2. Ma'lumot hikoyasi
Grafik xulosani ko'rsatadi: "sotuv o'smoqda", "kategoriya A eng katta". Yaxshi grafik — savolga javob (ko'z bilan). Tahlil natijasini yetkazish.
3. Chalg'itish xavfi
| Chalg'itish | Ta'sir |
|---|---|
| O'q 0'dan emas | Kichik farq katta ko'rinadi |
| Noto'g'ri tur | Noto'g'ri xulosa |
| Ortiqcha bezak | Ma'lumot yashirinadi |
| Tanlangan ma'lumot | Yolg'on hikoya |
Grafikga odam ishonadi — noto'g'ri grafik kuchli yolg'on.
4. To'g'ri va halol
- To'g'ri tur (savolga mos)
- Belgilangan (o'q, sarlavha)
- Halol (o'q 0'dan, to'liq ma'lumot)
- Sodda (ma'lumot asosiy)
5. Muhandislik saboqlari
- Rasm sondan tez tushuniladi
- Grafik — ma'lumot hikoyasi (yetkazish)
- Grafik chalg'itishi mumkin (mas'uliyat)
- To'g'ri tur + halol ko'rsatish
6. Xulosa
- Vizualizatsiya — kuchli (tez tushunish)
- Ma'lumot hikoyasini aytadi
- Lekin chalg'itishi mumkin
- Halol, to'g'ri grafik (mas'uliyat)
Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.
Xulosa
Bu darsda Matplotlib bilan grafik chizishni o'rgandik.
Eng muhim uch fikr:
Matplotlib asoslari va grafik turlari. Matplotlib tuzilishi:
figure(fig — butun rasm) vaaxes(ax — grafik maydoni);fig, ax = plt.subplots()(obyektga yo'naltirilgan uslub). Grafik turlari — savolga qarab: chiziq (ax.plot— trend, vaqt bo'yicha), ustun (ax.bar— taqqoslash, kategoriyalar), soch (ax.scatter— bog'lanish, ikki o'zgaruvchi), gistogramma (ax.hist— taqsimot, bir o'zgaruvchi tarqalishi). Har biri boshqa savolga javob.Bezash va bir necha grafik. Grafikni bezash (muhim — belgisiz grafik tushunarsiz):
ax.set_xlabel/set_ylabel(o'q nomlari — nima o'lchanadi),ax.set_title(sarlavha),ax.legend()(izoh —labelbilan chizilgan chiziqlar),ax.grid(True).subplots(qator, ustun)— bir rasmda bir necha grafik (dashboard —axes[0],axes[1]),fig.tight_layout()(ustma-ust tushmaslik).fig.savefig(fayl)— rasmga saqlash (PNG/PDF,dpi). pandas:df.plot(kind="line")(Matplotlib ustida — tez).Yaxshi va halol vizualizatsiya. Tamoyillar: to'g'ri grafik turi (trend → chiziq, taqqoslash → ustun, bog'lanish → scatter, taqsimot → hist), belgilangan (o'q nomlari, sarlavha, birlik), sodda (ortiqcha bezak emas), halol (o'q 0'dan, cho'zmagan). Vizualizatsiya sonlarni rasmga aylantiradi — miya rasmni tez tushunadi ("ma'lumot hikoyasini ayt"). Lekin mas'uliyat bilan: grafik chalg'itishi mumkin (o'q 0'dan emas — kichik farq katta ko'rinadi; noto'g'ri tur — noto'g'ri xulosa). Grafikga odam ishonadi — halol bo'lishi kerak ("kuch bilan mas'uliyat"). Vizualizatsiya — tahlil natijasini yetkazish.
Keyingi darsda Seaborn ni o'rganamiz: Matplotlib ustida qurilgan — statistik grafiklar (chiroyli, kam kod), DataFrame bilan bevosita — vizualizatsiyani osonlashtiradi.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!