Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. subplots (panel to'ri)
- 2.2. axes indekslash (har panel)
- 2.3. figsize, tight_layout (o'lcham, joy)
- 2.4. sharex/sharey (umumiy o'q)
- 2.5. Seaborn subplots (ax=)
- 2.6. Subplots amaliyoti
- 2.7. Subplots tuzoqlari
- 2.8. Subplots — bir figurada ko'p grafik
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — 2×2 panel to'ri
- Misol 2 — 1 qator (1D indeks)
- Misol 3 — sharey (taqqoslash)
- Misol 4 — Seaborn subplots (ax=)
- 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
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:
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:
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
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
"""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:
=== 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)
"""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:
=== 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)
"""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:
=== 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=)
"""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:
=== 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
plt.subplots(3, 3) # standart 6x4 (siqiladi) # ⚠️
plt.subplots(3, 3, figsize=(12, 12)) # katta # ✅2. tight_layout unut
fig, axes = plt.subplots(2, 2) # panellar to'sadi # ⚠️
fig.tight_layout() # joy # ✅3. axes indeks (1D/2D)
fig, axes = plt.subplots(1, 3); axes[0, 0] # 1D (xato) # ⚠️
axes[0] # 1D (to'g'ri) # ✅4. turli o'q (taqqoslash)
plt.subplots(1, 2) # turli y (taqqoslash xato) # ⚠️
plt.subplots(1, 2, sharey=True) # umumiy y # ✅5. figure-daraja Seaborn
sns.displot(data, ax=axes[0]) # displot — ax= yo'q (xato) # ⚠️
sns.histplot(data, ax=axes[0]) # axes-daraja # ✅6. suptitle vs title
axes[0].set_title("Umumiy") # bir panel (butun emas) # ⚠️
fig.suptitle("Umumiy") # butun figura # ✅7. bo'sh panel
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
subplots(qator, ustun)— panel to'ri.figsize— katta (ko'p panel).tight_layout()— joy (to'silish).axes[i, j](2D) /axes[i](1D).sharey=True— taqqoslash.suptitle— butun figura.Seaborn —
ax=(axes-daraja).fig.savefig— butun figura.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
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
- Panel to'ri (bir figurada ko'p)
- Butun figura, panellar massivi
- 4 (2×2)
- Har panel (2D)
- axes[i] (1D)
- Umumiy o'lcham
- Panel orasi joy (to'silish)
- Umumiy y (taqqoslash)
- Figura vs panel
- Panelga (axes-daraja)
- Yo'q (figure-daraja)
- Taqqoslash, EDA (ko'p grafik)
Vazifa 2: Xatolarni tuzating
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
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:
- Panel to'ri
- fig, axes
- Ko'p grafik
- Taqqoslash
Vazifa 4: axes
Modellang:
- axes[i, j] (2D)
- axes[i] (1D)
- Har panel
- ax metodlari
Vazifa 5: Joy va o'q
Modellang:
- figsize
- tight_layout
- sharey
- suptitle
Vazifa 6: Integratsiya
Modellang:
- Figure/axes (5.1)
- Seaborn ax=
- EDA
- 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
- Subplots taqqoslash (masshtab muhim)
sharey(umumiy y — to'g'ri)- O'q o'qish (balandlik emas)
- Kontekst (bir/turli hodisa)
5. Xulosa
- Subplots taqqoslash (ko'p grafik — bir figurada)
- Masshtab xavfli (turli o'q — balandlik aldaydi)
sharey(umumiy y — to'g'ri taqqoslash)- 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:
subplots va axes.
plt.subplots(qator, ustun)— panel to'ri (bir figurada ko'p grafik;figbutun figura,axespanellar massivi; 5.1 figure/axes ustida). axes indekslash —axes[i, j](2D —(2,2)) yokiaxes[i](1D —(1,3)); har panel alohida ax (plot/hist/scatter/set_title— 5.1-5.6).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_titlebir panel).Seaborn va taqqoslash. Seaborn subplots —
ax=axes[i, j](axes-daraja:histplot,boxplot,scatterplot; figure-darajadisplot/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).
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!