IlmHamroh
Data Science va sun'iy intellekt/Vizualizatsiya10/14-dars18 daqiqa
Mundarija (22)

5.10-dars: Ko'p grafik (subplots)

5-QISM — VIZUALIZATSIYA · 10-dars


1. Kirish va motivatsiya

Ba'zan bitta grafik yetmaydi — bir nechta grafikni yonma-yon ko'rsatish kerak: 4 xususiyatning histogrami, bir necha yilning trendi, yoki taqqoslash uchun. Subplots (kichik grafiklar) — bitta figurada bir nechta grafik (panel to'ri): fig, axes = plt.subplots(2, 2) — 2×2 = 4 panel, har biriga alohida chizasiz. 5.1-darsda fig, ax = plt.subplots() — bitta panel; endi bir nechta. Data Scientist EDA (ma'lumot o'rganish) paytida bir nechta xususiyatni bir qarashda ko'rish uchun subplots ishlatadi. Nega muhim? (1) Taqqoslash — grafiklar yonma-yon (bir figurada); (2) EDA — ko'p xususiyat bir qarashda; (3) Tuzilma — panel to'ri (tartibli). Bu dars subplots'ni o'rgatadi — bir figurada ko'p grafik.

Subplots (ko'p grafik) — bir figurada bir necha panel: plt.subplots(qator, ustun) (panel to'ri — fig, axes qaytaradi; 5.1 figure/axes), axes[i] yoki axes[i, j] (har panel — alohida ax), har ax'da (ax.plot, ax.set_title — 5.1), figsize= (umumiy o'lcham), tight_layout() (panel orasi joy — to'silmaslik), sharex/sharey (umumiy o'q — taqqoslash). Foydalanish: taqqoslash, EDA, panel to'ri. Bu 5.1 (figure/axes), 5.7 (Seaborn ax=) bilan bog'liq. Subplots — bir figurada ko'p grafik. Panel. Taqqoslash.

Real vaziyat. Data Scientist uy ma'lumotida 4 xususiyat (maydon, narx, yosh, xonalar) taqsimotini ko'rmoqchi. Bitta grafik: 4 alohida rasm (fayl — chalkash; taqqoslash qiyin). Subplots (fig, axes = plt.subplots(2, 2, figsize=(10, 8))): 2×2 = 4 panel bir figurada; axes[0, 0].hist(maydon), axes[0, 1].hist(narx), ... (har panel — bir xususiyat); fig.tight_layout() (panel orasi joy). Bir qarashda 4 taqsimot (maydon normal, narx o'ngga cho'zilgan (5.5 chapga/o'ngga), yosh bir tekis, xonalar diskret) — taqqoslash (bir figurada; EDA). Data Scientist ko'p xususiyatni bir qarashda ko'rdi (subplots — panel to'ri). Subplots — bir figurada ko'p grafik.

Bu darsda subplots'ni o'rganamiz.

Bu darsda:

  • subplots (panel to'ri)
  • axes indekslash (har panel)
  • figsize, tight_layout (o'lcham, joy)
  • sharex/sharey (umumiy o'q)
  • Seaborn subplots (ax=)
  • Subplots amaliyoti
  • Subplots tuzoqlari
  • Amaliy: subplots modeli

ℹ Misollar real matplotlib bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.


2. Nazariya — chuqur tushuntirish

2.1. subplots (panel to'ri)

Panel to'ri:

python
import matplotlib.pyplot as plt

# subplots(qator, ustun) — panel to'ri
fig, axes = plt.subplots(2, 2)   # 2×2 = 4 panel

# fig — butun figura; axes — panellar massivi

subplots (panel to'ri) — bir figurada ko'p panel: plt.subplots(qator, ustun) — panel to'ri yaratadi (fig, axes qaytaradi; fig — butun figura, axes — panellar massivi; 5.1 figure/axes). Sabab: bitta plt.subplots() 5.1-bob — bir panel; ko'p grafik uchun to'r ((2, 2) — 2 qator × 2 ustun = 4 panel; (1, 3) — 1 qator × 3 = yonma-yon 3). fig (butun figura — saqlash, umumiy sarlavha), axes (panellar — har biriga chizish). Panel to'ri ((qator, ustun)), fig (butun), axes (panellar). subplots — panel to'ri (bir figurada ko'p). Panel. To'r.

2.2. axes indekslash (har panel)

Har panelga:

python
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)   # 2D massiv

# har panel — axes[qator, ustun]
axes[0, 0].plot(...)   # yuqori chap
axes[0, 1].hist(...)   # yuqori o'ng
axes[1, 0].scatter(...)   # past chap

# 1 qator — axes[i] (1D)
fig2, axes2 = plt.subplots(1, 3)
axes2[0].plot(...)

axes indekslash (har panel) — massiv: subplots(qator, ustun) axes — massiv (2D — axes[qator, ustun]; 1 qator/ustun — 1D axes[i]); har panelga alohida chizish (axes[0, 0].plot, axes[0, 1].hist — 5.1 ax metodlari). Sabab: har panel — mustaqil ax (o'z grafigi, sarlavha, o'qi — 5.1); indeks bilan tanlash ([0,0] yuqori chap, [1,1] past o'ng); ax metodlari (plot, hist, scatter, set_title — 5.1-5.6). 2D ((2,2) — axes[i,j]), 1D ((1,3) yoki (3,1) — axes[i]), axes.flat (tekis — sikl uchun). axes indekslash — axes[i,j] (har panel alohida). Massiv. Panel.

2.3. figsize, tight_layout (o'lcham, joy)

figsize, tight_layout — o'lcham va joy: figsize=(kenglik, balandlik) (butun figura o'lchami — dyuym; ko'p panel — katta; subplots(2, 2, figsize=(10, 8))), fig.tight_layout() (panel orasi joy — sarlavha/yorliq to'silmasligi; avtomatik joylashtirish). Sabab: ko'p panel — o'lcham (kichik figura — panellar siqiladi; katta — o'qiladi); tight_layout — panellar to'sadi (sarlavha/o'q yorliqlari ustma-ust; tight_layout — joy qo'shadi). figsize (umumiy o'lcham — panel soniga qarab), tight_layout (to'silish — joy), constrained_layout=True (yangi — avtomatik joy). figsize (o'lcham), tight_layout (joy). figsize/tight_layout — o'lcham va joy (siqilish/to'silish). O'lcham. Joy.

2.4. sharex/sharey (umumiy o'q)

sharex/sharey (umumiy o'q) — taqqoslash: sharex=True/sharey=True (panellar bir xil o'q — x yoki y; taqqoslash oson). Sabab: panellar turli o'q (avtomatik — har panel o'z masshtabi; taqqoslash noto'g'ri — bir xil balandlik turli qiymat); sharey=True — bir xil y (taqqoslash — balandlik to'g'ri); "aldamas masshtab" (5.13 — yolg'on grafik). sharex (bir xil x — vaqt qatori), sharey (bir xil y — taqqoslash; muhim). sharex/sharey — umumiy o'q (taqqoslash; masshtab). Umumiy. Taqqoslash.

2.5. Seaborn subplots (ax=)

Seaborn subplots (ax=) — birga: Seaborn 5.7-bob grafiklari ax= parametr (subplots panelga chizish; sns.histplot(..., ax=axes[0, 0])); Seaborn (chizadi) + Matplotlib subplots (tuzilma — 5.7 integratsiya). Sabab: Seaborn axes-daraja grafiklari (histplot, scatterplot, boxplot — ax=; panelga); subplots (Matplotlib — panel to'ri) + Seaborn (har panel — ax=); figure-daraja (relplot, displot, catplot — o'z subplots'i; ax= yo'q — chalkash). ax=axes[i, j] (Seaborn panelga), axes-daraja (histplot, boxplot — ax=), figure-daraja (displot — o'zi subplots; aralashtirma). Seaborn subplots — ax= (axes-daraja; Matplotlib to'r + Seaborn chizish). Seaborn. ax=.

2.6. Subplots amaliyoti

Subplots amaliyoti: fig, axes = plt.subplots(qator, ustun, figsize=(k, b)) (panel to'ri + o'lcham); axes[i, j].plot/hist/... (har panel — 5.1-5.6); axes[i, j].set_title(...) (har panel sarlavha); fig.suptitle(...) (butun figura sarlavha); fig.tight_layout() (joy — to'silish); sharey=True (taqqoslash — umumiy y); fig.savefig(...) (butun figura — 5.1); Seaborn (ax=axes[i, j] — 5.7). Tuzoqlar: figsize kichik (siqilish), tight_layout unut (to'silish), axes 1D/2D (indeks xato), turli o'q (taqqoslash — sharey), figure-daraja (ax= yo'q). Amaliyot — subplots, axes, tight_layout, sharey. Panel. Taqqoslash.

2.7. Subplots tuzoqlari

Subplots asosiy tuzoqlari: figsize kichik (ko'p panel — kichik figura (figsize yo'q — standart 6×4); panellar siqiladi (o'q/yorliq o'qib bo'lmas); figsize katta — panel soniga qarab (2×2 — ~10×8)); tight_layout unut (panellar to'sadi (sarlavha/o'q yorliqlari ustma-ust); fig.tight_layout() yoki constrained_layout=True — joy); axes 1D vs 2D (subplots(2, 2) — 2D (axes[i, j]); subplots(1, 3) — 1D (axes[i]); subplots(1, 1) — skalyar (axes — massiv emas; [i] xato); indeks turi e'tibor); turli o'q taqqoslash (panellar turli masshtab (avtomatik — har panel o'z min-max); taqqoslash noto'g'ri (bir xil balandlik — turli qiymat; 5.13 aldash); sharey=True — umumiy y); figure-daraja Seaborn (sns.displot/relplot/catplot — o'z subplots'i (figure-daraja; ax= yo'q); Matplotlib subplots bilan aralashtirma (xato); axes-daraja (histplot, boxplot — ax=)); bo'sh panel (subplots(2, 3) — 6 panel, 5 grafik; 6-panel bo'sh (o'chir — fig.delaxes(axes[1, 2]))); suptitle vs title (fig.suptitle — butun figura; ax.set_title — bir panel; chalkashtirma); savefig figura (fig.savefig — butun figura; ax — bir panel emas). Sabab: subplots tuzilma/o'lcham/indeks nozik (siqilish, to'silish, indeks, masshtab). Yechim: figsize katta, tight_layout, indeks turi, sharey. Tuzoqlar — figsize, tight_layout, indeks, taqqoslash.

2.8. Subplots — bir figurada ko'p grafik

Subplots asosiy g'oyasi — bir figurada ko'p grafik: bitta panel (5.1 — fig, ax) yetmaganda, panel to'ri (plt.subplots(qator, ustun) — bir figurada ko'p grafik; taqqoslash, EDA). fig, axes = plt.subplots(2, 2, figsize=(10, 8)) (panel to'ri + o'lcham), axes[i, j] (har panel — alohida ax; plot/hist/scatter — 5.1-5.6; set_title), figsize (umumiy o'lcham — siqilish), tight_layout (joy — to'silish), sharex/sharey (umumiy o'q — taqqoslash), suptitle (butun figura sarlavha), Seaborn (ax=axes[i, j] — axes-daraja; 5.7). Foydalanish: taqqoslash (grafiklar yonma-yon — bir figurada), EDA (ko'p xususiyat bir qarashda — 9-qism), tuzilma (panel to'ri — tartibli). Tuzoqlar: figsize kichik (siqilish), tight_layout (to'silish), axes 1D/2D (indeks), turli o'q (taqqoslash — sharey), figure-daraja Seaborn (ax= yo'q). Bu 5.1 (figure/axes) ustida va 5.7 (Seaborn ax=), 9-qism (EDA) bilan. Subplots — bir figurada ko'p grafik (taqqoslash, EDA — panel to'ri). Panel. To'r. Taqqoslash.


3. Tez ma'lumotnoma

python
import matplotlib.pyplot as plt

# PANEL TO'RI:
fig, axes = plt.subplots(2, 2, figsize=(10, 8))   # 2×2 = 4 panel
#   fig — butun figura · axes — panellar massivi

# HAR PANEL (2D — axes[qator, ustun]):
axes[0, 0].hist(maydon);  axes[0, 0].set_title("Maydon")
axes[0, 1].hist(narx);    axes[0, 1].set_title("Narx")
axes[1, 0].scatter(x, y)
axes[1, 1].plot(t, v)

# 1 QATOR (1D — axes[i]):
fig2, axes2 = plt.subplots(1, 3)
axes2[0].plot(...)

# JOY / O'LCHAM / TAQQOSLASH:
fig.suptitle("Umumiy sarlavha")   # butun figura
fig.tight_layout()                 # panel orasi joy (to'silmaslik)
plt.subplots(2, 2, sharey=True)    # umumiy y (taqqoslash)

# SEABORN (axes-daraja — ax=):
sns.histplot(data, ax=axes[0, 0])   # panelga
#   figure-daraja (displot/relplot) — ax= yo'q (o'z subplots'i)

fig.savefig("panellar.png")   # butun figura
QOIDA: figsize katta · tight_layout · indeks 1D/2D · sharey (taqqoslash)

Subplots xulosasi

subplots(qator, ustun) — panel to'ri (fig, axes)
axes[i, j] — har panel (alohida ax; plot/hist/set_title)
figsize/tight_layout — o'lcham va joy (siqilish/to'silish)
sharey — umumiy o'q (taqqoslash — masshtab)
Seaborn — ax= (axes-daraja; figure-daraja emas)

4. Batafsil misollar

Misollar real matplotlib bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.

Misol 1 — 2×2 panel to'ri

python
"""2x2 subplots (real matplotlib)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np


def main() -> None:
    np.random.seed(0)

    print("=== 1. subplots(2, 2) ===")
    fig, axes = plt.subplots(2, 2, figsize=(10, 8))
    print(f"  panellar shakli: {axes.shape} (2x2 = {axes.size})")

    print("\n=== 2. Har panelga chizish ===")
    axes[0, 0].hist(np.random.normal(0, 1, 100))
    axes[0, 1].plot([1, 2, 3], [2, 4, 6])
    axes[1, 0].scatter([1, 2, 3], [3, 1, 2])
    axes[1, 1].bar(["a", "b"], [3, 5])
    print("  4 panel: hist, plot, scatter, bar")

    print("\n=== 3. Har panel sarlavhasi ===")
    axes[0, 0].set_title("Histogram")
    axes[0, 1].set_title("Chiziq")
    print(f"  [0,0]: {axes[0, 0].get_title()}")

    print("\n=== 4. Umumiy sarlavha va joy ===")
    fig.suptitle("4 grafik")
    fig.tight_layout()
    print(f"  suptitle: {fig._suptitle.get_text()}")
    plt.close(fig)
    print("  ⭐ subplots — panel to'ri (4 grafik)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. subplots(2, 2) ===
  panellar shakli: (2, 2) (2x2 = 4)

=== 2. Har panelga chizish ===
  4 panel: hist, plot, scatter, bar

=== 3. Har panel sarlavhasi ===
  [0,0]: Histogram

=== 4. Umumiy sarlavha va joy ===
  suptitle: 4 grafik
  ⭐ subplots — panel to'ri (4 grafik)

Nima ko'rsatdi: 2.1, 2.2-bo'limlar.

Misol 2 — 1 qator (1D indeks)

python
"""1 qator subplots: 1D indeks (real matplotlib)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np


def main() -> None:
    np.random.seed(0)

    print("=== 1. subplots(1, 3) — 1D ===")
    fig, axes = plt.subplots(1, 3, figsize=(12, 4))
    print(f"  panellar shakli: {axes.shape} (1D — axes[i])")

    print("\n=== 2. axes[i] (1D indeks) ===")
    axes[0].hist(np.random.normal(0, 1, 100))
    axes[1].hist(np.random.normal(5, 2, 100))
    axes[2].hist(np.random.normal(-3, 1, 100))
    print("  3 panel: axes[0], axes[1], axes[2]")

    print("\n=== 3. Sarlavhalar ===")
    for i, nom in enumerate(["A", "B", "C"]):
        axes[i].set_title(nom)
    print(f"  sarlavhalar: {[axes[i].get_title() for i in range(3)]}")

    print("\n=== 4. Tushuntirish ===")
    print("  (1, 3) — 1D massiv (axes[i], 2D emas)")
    plt.close(fig)
    print("  ⭐ 1 qator — 1D indeks (axes[i])")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. subplots(1, 3) — 1D ===
  panellar shakli: (3,) (1D — axes[i])

=== 2. axes[i] (1D indeks) ===
  3 panel: axes[0], axes[1], axes[2]

=== 3. Sarlavhalar ===
  sarlavhalar: ['A', 'B', 'C']

=== 4. Tushuntirish ===
  (1, 3) — 1D massiv (axes[i], 2D emas)
  ⭐ 1 qator — 1D indeks (axes[i])

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — sharey (taqqoslash)

python
"""sharey: umumiy o'q (real matplotlib)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np


def main() -> None:
    np.random.seed(0)
    a = np.random.normal(50, 5, 100)
    b = np.random.normal(50, 20, 100)   # kengroq tarqoq

    print("=== 1. sharey=True (umumiy y) ===")
    fig, axes = plt.subplots(1, 2, sharey=True, figsize=(10, 4))
    axes[0].hist(a); axes[1].hist(b)
    y0 = axes[0].get_ylim()
    y1 = axes[1].get_ylim()
    print(f"  panel 0 y: {tuple(round(v) for v in y0)}")
    print(f"  panel 1 y: {tuple(round(v) for v in y1)}")

    print("\n=== 2. Umumiy o'q (bir xil) ===")
    print(f"  y bir xil: {y0 == y1}")

    print("\n=== 3. Nega muhim ===")
    print("  turli y — taqqoslash noto'g'ri (5.13 aldash)")

    print("\n=== 4. Tushuntirish ===")
    print("  sharey — bir xil masshtab (to'g'ri taqqoslash)")
    plt.close(fig)
    print("  ⭐ sharey — umumiy o'q (taqqoslash)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. sharey=True (umumiy y) ===
  panel 0 y: (0, 20)
  panel 1 y: (0, 20)

=== 2. Umumiy o'q (bir xil) ===
  y bir xil: True

=== 3. Nega muhim ===
  turli y — taqqoslash noto'g'ri (5.13 aldash)

=== 4. Tushuntirish ===
  sharey — bir xil masshtab (to'g'ri taqqoslash)
  ⭐ sharey — umumiy o'q (taqqoslash)

Nima ko'rsatdi: 2.4-bo'lim.

Misol 4 — Seaborn subplots (ax=)

python
"""Seaborn subplots: ax= (real seaborn/matplotlib)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    df = pd.DataFrame({
        "maydon": np.random.normal(80, 20, 100),
        "narx": np.random.normal(240, 60, 100),
        "yosh": np.random.normal(15, 5, 100),
    })

    print("=== 1. subplots + Seaborn ax= ===")
    fig, axes = plt.subplots(1, 3, figsize=(12, 4))
    sns.histplot(df["maydon"], ax=axes[0])
    sns.histplot(df["narx"], ax=axes[1])
    sns.histplot(df["yosh"], ax=axes[2])
    print("  3 Seaborn histplot — 3 panel (ax=)")

    print("\n=== 2. Har panel (ax=axes[i]) ===")
    print(f"  panellar: {len(axes)}")

    print("\n=== 3. Axes-daraja ===")
    print("  histplot — ax= (panelga); displot — o'z subplots'i")

    print("\n=== 4. Tushuntirish ===")
    print("  Seaborn (chizadi) + Matplotlib subplots (to'r)")
    fig.tight_layout()
    plt.close(fig)
    print("  ⭐ Seaborn subplots — ax= (axes-daraja)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. subplots + Seaborn ax= ===
  3 Seaborn histplot — 3 panel (ax=)

=== 2. Har panel (ax=axes[i]) ===
  panellar: 3

=== 3. Axes-daraja ===
  histplot — ax= (panelga); displot — o'z subplots'i

=== 4. Tushuntirish ===
  Seaborn (chizadi) + Matplotlib subplots (to'r)
  ⭐ Seaborn subplots — ax= (axes-daraja)

Nima ko'rsatdi: 2.5-bo'lim.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"subplots bir panel" Panel to'ri (ko'p)
"axes doim 2D" (2,2) 2D, (1,3) 1D
"figsize kerakmas" Ko'p panel — katta
"tight_layout ixtiyoriy" To'silish (kerak)
"turli o'q OK" Taqqoslash — sharey
"Seaborn har grafik ax=" Axes-daraja (displot yo'q)
"suptitle = title" Figura vs panel
"savefig panel" Butun figura (fig)

6. Keng tarqalgan xatolar va yechimlari

1. figsize kichik

python
plt.subplots(3, 3)   # standart 6x4 (siqiladi)                    # ⚠️
plt.subplots(3, 3, figsize=(12, 12))   # katta                    # ✅

2. tight_layout unut

python
fig, axes = plt.subplots(2, 2)   # panellar to'sadi               # ⚠️
fig.tight_layout()   # joy                                         # ✅

3. axes indeks (1D/2D)

python
fig, axes = plt.subplots(1, 3); axes[0, 0]   # 1D (xato)          # ⚠️
axes[0]   # 1D (to'g'ri)                                          # ✅

4. turli o'q (taqqoslash)

python
plt.subplots(1, 2)   # turli y (taqqoslash xato)                 # ⚠️
plt.subplots(1, 2, sharey=True)   # umumiy y                     # ✅

5. figure-daraja Seaborn

python
sns.displot(data, ax=axes[0])   # displot — ax= yo'q (xato)      # ⚠️
sns.histplot(data, ax=axes[0])   # axes-daraja                   # ✅

6. suptitle vs title

python
axes[0].set_title("Umumiy")   # bir panel (butun emas)           # ⚠️
fig.suptitle("Umumiy")   # butun figura                          # ✅

7. bo'sh panel

python
plt.subplots(2, 3)   # 6 panel, 5 grafik → 1 bo'sh               # ⚠️
fig.delaxes(axes[1, 2])   # bo'sh panelni o'chir                 # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 5.1-dars (o'tilgan): Figure/axes (bir panel)
  • 5.7-dars (o'tilgan): Seaborn (ax=)
  • 5.13-dars: Yolg'on grafiklar (sharey — masshtab)
  • 5.14-dars: Amaliy loyiha (dashboard)
  • 9-qism (reja): EDA (ko'p xususiyat)

8. Eng yaxshi amaliyotlar

  1. subplots(qator, ustun) — panel to'ri.

  2. figsize — katta (ko'p panel).

  3. tight_layout() — joy (to'silish).

  4. axes[i, j] (2D) / axes[i] (1D).

  5. sharey=True — taqqoslash.

  6. suptitle — butun figura.

  7. Seaborn — ax= (axes-daraja).

  8. fig.savefig — butun figura.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # subplots nima?
2.  # fig va axes?
3.  # (2,2) nechta panel?
4.  # axes[i,j] nima?
5.  # (1,3) indeks?
6.  # figsize nima?
7.  # tight_layout?
8.  # sharey nima?
9.  # suptitle vs title?
10. # Seaborn ax=?
11. # displot ax=?
12. # nega subplots?
Javoblar
  1. Panel to'ri (bir figurada ko'p)
  2. Butun figura, panellar massivi
  3. 4 (2×2)
  4. Har panel (2D)
  5. axes[i] (1D)
  6. Umumiy o'lcham
  7. Panel orasi joy (to'silish)
  8. Umumiy y (taqqoslash)
  9. Figura vs panel
  10. Panelga (axes-daraja)
  11. Yo'q (figure-daraja)
  12. Taqqoslash, EDA (ko'p grafik)

Vazifa 2: Xatolarni tuzating

python
1.  plt.subplots(3, 3)   # siqiladi

2.  fig, axes = plt.subplots(2, 2)   # to'sadi

3.  axes = plt.subplots(1, 3); axes[0, 0]

4.  plt.subplots(1, 2)   # taqqoslash

5.  sns.displot(data, ax=axes[0])
Javoblar
python
1.  figsize=(12, 12)

2.  fig.tight_layout()

3.  axes[0] (1D)

4.  sharey=True

5.  sns.histplot(data, ax=axes[0])

Vazifa 3: subplots

Modellang:

  1. Panel to'ri
  2. fig, axes
  3. Ko'p grafik
  4. Taqqoslash

Vazifa 4: axes

Modellang:

  1. axes[i, j] (2D)
  2. axes[i] (1D)
  3. Har panel
  4. ax metodlari

Vazifa 5: Joy va o'q

Modellang:

  1. figsize
  2. tight_layout
  3. sharey
  4. suptitle

Vazifa 6: Integratsiya

Modellang:

  1. Figure/axes (5.1)
  2. Seaborn ax=
  3. EDA
  4. Dashboard

Vazifa 7: O'ylash

Subplots bir figurada ko'p grafik beradi — taqqoslash uchun kuchli. Lekin sharey bo'lmasa, panellar turli masshtabda bo'ladi va bir xil balandlik turli qiymatni anglatishi mumkin (aldamchi taqqoslash). Nima uchun "bir figurada taqqoslash" masshtab masalasi tufayli xavfli bo'lishi mumkin, va Data Scientist subplots taqqoslashda nimaga e'tibor berishi kerak?

Javob

Qisqa javob: Subplots taqqoslash uchun kuchli (ko'p grafik — bir figurada), lekin sharey bo'lmasa masshtab turli (aldamchi); "bir figurada taqqoslash" masshtab tufayli xavfli, Data Scientist masshtab/o'q/kontekstga e'tibor berishi kerak, chunki: (1) masshtab aldaydi — panellar turli o'q (avtomatik — har panel o'z min-max); ikki histogram (bir panel y: 0-10, boshqa y: 0-100) — bir xil balandlik turli qiymat (ko'z aldanadi — "bir xil" deb; aslida 10× farq); 5.13 (yolg'on grafik — masshtab); (2) sharey yechim — sharey=True (umumiy y — bir masshtab; balandlik to'g'ri taqqoslash); sharex (bir xil x — vaqt qatori); (3) taqqoslash maqsadi — subplots taqqoslash uchun (yonma-yon); masshtab turli bo'lsa — taqqoslash ma'nosiz (asli maqsad yo'qoladi); (4) kontekst — panellar bir hodisa (turli qism) — bir masshtab; turli hodisa (turli birlik — narx vs yosh) — turli masshtab (lekin taqqoslamang — faqat yonma-yon). "Nega xavfli": (a) vizual aldash — ko'z balandlik/o'lchamni taqqoslaydi (o'q emas); turli masshtab — balandlik aldaydi 5.13-bob; (b) avtomatik masshtab — Matplotlib avtomatik (har panel o'z min-max; qulay, lekin taqqoslash uchun xavfli); (c) e'tiborsizlik — o'q yorliqlarini o'qimay (faqat shakl — aldash; o'q o'qish kerak); (d) soxta naqsh — turli masshtab soxta naqsh (bir panel "katta o'sish" — aslida kichik; masshtab). "E'tibor": (1) sharey (taqqoslash — umumiy y; bir masshtab); (2) o'q o'qish (balandlik emas — o'q qiymat; yorliq); (3) bir birlik (taqqoslash — bir birlik/masshtab; turli birlik — taqqoslamang); (4) kontekst (bir hodisa — umumiy o'q; turli — alohida, taqqoslamang); (5) ylim (qo'lda — bir xil chegara; sharey yoki set_ylim). Saboqlar: subplots taqqoslash (ko'p grafik) lekin masshtab (turli o'q — aldash); sharey (umumiy y — to'g'ri taqqoslash); o'q o'qish (balandlik emas); kontekst (bir/turli hodisa). To'g'ri: subplots taqqoslash — sharey (umumiy masshtab); o'q o'qish (qiymat — balandlik emas); bir birlik (taqqoslash); vizual aldash (masshtab — 5.13). Muvozanat: subplots kuchli (ko'p grafik — bir figurada) + masshtab (sharey — to'g'ri taqqoslash; aldamas). Bu Data Science vizualizatsiya halolligi asosiy (subplots taqqoslash — masshtab muhim; sharey; o'q o'qish; 5.13 yolg'on grafik). Subplots — taqqoslash (masshtab e'tibor — sharey; aldamas).

1. Nega masshtab xavfli

  • Turli o'q (avtomatik — har panel min-max)
  • Balandlik aldaydi (bir xil balandlik — turli qiymat)
  • Vizual aldash (ko'z balandlik — o'q emas; 5.13)
  • Soxta naqsh (turli masshtab — soxta o'sish)

2. Nega e'tibor

  • sharey (umumiy y — bir masshtab)
  • O'q o'qish (qiymat — balandlik emas)
  • Bir birlik (taqqoslash — bir masshtab)
  • Kontekst (bir/turli hodisa)

3. Turli o'q vs umumiy o'q

Turli o'q (aldash) Umumiy o'q (sharey)
Avtomatik (min-max) Bir masshtab
Balandlik aldaydi To'g'ri taqqoslash
Soxta naqsh Halol

4. Saboqlar

  1. Subplots taqqoslash (masshtab muhim)
  2. sharey (umumiy y — to'g'ri)
  3. O'q o'qish (balandlik emas)
  4. Kontekst (bir/turli hodisa)

5. Xulosa

  1. Subplots taqqoslash (ko'p grafik — bir figurada)
  2. Masshtab xavfli (turli o'q — balandlik aldaydi)
  3. sharey (umumiy y — to'g'ri taqqoslash)
  4. O'q o'qish, bir birlik (aldamas — 5.13)

Nimani mustahkamlaydi: 2.4, 2.7-bo'limlar.


Xulosa

Bu darsda subplots'ni o'rgandik.

Eng muhim uch fikr:

  1. subplots va axes. plt.subplots(qator, ustun) — panel to'ri (bir figurada ko'p grafik; fig butun figura, axes panellar massivi; 5.1 figure/axes ustida). axes indekslash — axes[i, j] (2D — (2,2)) yoki axes[i] (1D — (1,3)); har panel alohida ax (plot/hist/scatter/set_title — 5.1-5.6).

  2. O'lcham, joy, o'q. figsize=(k, b) (umumiy o'lcham — ko'p panel katta; siqilish), fig.tight_layout() (panel orasi joy — to'silish), sharex/sharey (umumiy o'q — taqqoslash; turli masshtab aldaydi — 5.13), fig.suptitle (butun figura sarlavha — ax.set_title bir panel).

  3. Seaborn va taqqoslash. Seaborn subplots — ax=axes[i, j] (axes-daraja: histplot, boxplot, scatterplot; figure-daraja displot/relplot/catplot — ax= yo'q, o'z subplots'i). Subplots — bir figurada ko'p grafik (taqqoslash, EDA — panel to'ri). Tuzoqlar: figsize kichik (siqilish), tight_layout unut (to'silish), axes 1D/2D (indeks), turli o'q (taqqoslash — sharey), figure-daraja Seaborn (ax= yo'q), bo'sh panel (delaxes).

Keyingi darsda rang, uslub va bezashni o'rganamiz: grafikni chiroyli va tushunarli qilish — rang xaritasi, uslub (style), yorliq, izoh (annotate), grid (5.1 bezash chuqurroq).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
5.10-dars: Ko'p grafik (subplots) — IlmHamroh