IlmHamroh
Python kursi/Malumot tahlili13/18-dars15 daqiqa
Mundarija (22)

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 (Agg backend — fayl uchun) bilan sinaladi; grafik xususiyatlari (chiziq soni, belgi) tekshiriladi.


2. Nazariya — chuqur tushuntirish

2.1. Matplotlib asoslari (fig, ax)

Grafik ikki qismdan iborat:

python
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:

python
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:

python
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:

python
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:

python
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:

python
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:

python
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

python
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 + belgi

4. Batafsil misollar

Misollarda Matplotlib (Agg backend — ekransiz, fayl uchun) bilan sinaladi. Grafik xususiyatlari (chiziq soni, o'q nomlari, saqlangan fayl) tekshiriladi (rasm emas).

Misol 1 — Chiziq grafik (trend)

python
"""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:

text
=== 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

python
"""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:

text
=== 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

python
"""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:

text
=== 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.

python
"""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:

text
=== 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 grafigi

Nima 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

python
ax.plot(x, y)   # nima o'lchanadi?             # ⚠️
ax.set_xlabel(...); ax.set_ylabel(...)          # ✅

2. Noto'g'ri grafik turi

python
ax.plot(kategoriyalar, y)   # kategoriya chiziq  # ⚠️
ax.bar(kategoriyalar, y)                          # ✅

3. legendsiz ko'p chiziq

python
ax.plot(x, y1); ax.plot(x, y2)   # qaysi qaysi?  # ⚠️
ax.plot(x, y1, label="A"); ...; ax.legend()      # ✅

4. Grafiklar ustma-ust (subplots)

python
fig, axes = plt.subplots(2, 2)   # ustma-ust     # ⚠️
fig.tight_layout()                                # ✅

5. Grafikni yopmaslik (xotira)

python
# ko'p grafik ochiq (xotira to'ladi)              # ⚠️
plt.close(fig)                                    # ✅

6. savefig showdan keyin

python
plt.show(); fig.savefig(...)   # bo'sh bo'lishi mumkin  # ⚠️
fig.savefig(...); plt.show()                            # ✅

7. O'q 0'dan boshlamaslik (chalg'ituvchi)

python
# 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

  1. To'g'ri grafik turi (trend/taqqoslash/taqsimot).

  2. Doim belgila (o'q nomi, sarlavha).

  3. fig, ax (obyektga yo'naltirilgan).

  4. Ko'p chiziq — legend.

  5. subplots — tight_layout.

  6. Grafikni yop (plt.close).

  7. Halol grafik (o'q 0'dan).

  8. Tez tahlil — df.plot(); hisobot — savefig.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
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
  1. Vizualizatsiya kutubxonasi
  2. figure (rasm) + axes (o'qlar)
  3. Chiziq grafik (trend)
  4. Ustun grafik (taqqoslash)
  5. Soch grafik (bog'lanish)
  6. Gistogramma (taqsimot)
  7. X o'q nomi
  8. Izoh (label'lar)
  9. Bir necha grafik
  10. Faylga saqlash
  11. pandas'dan grafik
  12. Chiziq (plot)

Vazifa 2: Xatolarni tuzating

python
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 avval
Javoblar
python
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:

  1. plot
  2. Ko'p chiziq
  3. Bezash
  4. legend

Vazifa 4: Ustun/soch

Grafik:

  1. bar
  2. scatter
  3. Bezash
  4. Rang

Vazifa 5: Gistogramma/subplots

Grafik:

  1. hist
  2. subplots
  3. tight_layout
  4. Yop

Vazifa 6: Hisobot

To'liq:

  1. subplots
  2. Bezash
  3. savefig
  4. 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

  1. Rasm sondan tez tushuniladi
  2. Grafik — ma'lumot hikoyasi (yetkazish)
  3. Grafik chalg'itishi mumkin (mas'uliyat)
  4. To'g'ri tur + halol ko'rsatish

6. Xulosa

  1. Vizualizatsiya — kuchli (tez tushunish)
  2. Ma'lumot hikoyasini aytadi
  3. Lekin chalg'itishi mumkin
  4. 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:

  1. Matplotlib asoslari va grafik turlari. Matplotlib tuzilishi: figure (fig — butun rasm) va axes (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.

  2. 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 — label bilan 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).

  3. 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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
24.13-dars: Matplotlib — IlmHamroh