IlmHamroh
Python kursi/Malumot tahlili15/18-dars16 daqiqa
Mundarija (22)

24.15-dars: Interaktiv vizualizatsiya

24-QISM — MA'LUMOT TAHLILI · 15-dars


1. Kirish va motivatsiya

24.13–24.14 da Matplotlib va Seaborn bilan statik (harakatsiz) grafik chizdik — rasm (PNG). Statik grafik hisobot uchun yaxshi, lekin interaktiv (harakatlanuvchi) grafik ko'proq: sichqoncha bilan kattalashtirish (zoom), nuqta ustida ma'lumot (hover — aniq qiymat), toifani yashirish (legend bosish), aylantirish (3D). Veb sahifa, dashboard, taqdimotda interaktiv grafik foydalanuvchiga ma'lumotni o'zi kashf qilish imkonini beradi.

Plotly — Python'ning eng mashhur interaktiv vizualizatsiya kutubxonasi: grafik veb (HTML/JavaScript) da, sichqoncha bilan boshqariladi. Plotly Express (px) — yuqori daraja (Seaborn kabi — DataFrame bilan bir qator), Graph Objects (go) — past daraja (to'liq nazorat). px.line, px.bar, px.scatter — interaktiv grafik. Dash (Plotly'ning veb-freymvorki) — to'liq dashboard. Interaktiv vizualizatsiya — zamonaviy ma'lumot taqdimoti (veb, dashboard).

Real vaziyat. Bir dashboard 100 mahsulot sotuvini ko'rsatishi kerak edi — statik grafikda hammasi sig'mas, o'qib bo'lmasdi. Plotly bilan: interaktiv grafik (kattalashtirish, hover bilan aniq qiymat, filtr). Foydalanuvchi o'zi kerakli qismini ko'rdi, tafsilotni oldi. Statik hisobot o'rniga interaktiv dashboard — foydalanuvchi ma'lumotni o'zi kashf qildi. Interaktivlik — katta ma'lumotni taqdim etishning kaliti.

Bu darsda Plotly bilan interaktiv vizualizatsiyani o'rganamiz.

Bu darsda:

  • Plotly nima (interaktiv, veb)
  • Plotly Express (px)
  • Grafik turlari (line, bar, scatter)
  • Rang va o'lcham (hue kabi)
  • Graph Objects (go)
  • Grafikni bezash (update_layout)
  • Saqlash (HTML)
  • Amaliy: interaktiv dashboard

ℹ Misollarda Plotly bilan sinaladi; grafik tuzilishi (trace turi, soni, layout) tekshiriladi. Ehtiyot: fayl nomi plotly.py bo'lmasin (paketni to'sadi).


2. Nazariya — chuqur tushuntirish

2.1. Plotly nima

Plotly — interaktiv veb grafik:

python
import plotly.express as px
fig = px.line(df, x="oy", y="sotuv")
fig.show()          # brauzerda interaktiv
fig.write_html("grafik.html")   # HTML faylga

Plotly — interaktiv (harakatlanuvchi) vizualizatsiya kutubxonasi: grafik veb (HTML + JavaScript) da, sichqoncha bilan boshqariladi (zoom, hover — aniq qiymat, filtr). Matplotlib/Seaborn'dan farq: interaktiv (statik emas), vebga mos. px (Express — yuqori daraja), go (Graph Objects — past). fig.show() (brauzer), write_html (fayl). Veb, dashboard uchun.

2.2. Plotly Express (px)

Yuqori daraja — bir qator:

python
import plotly.express as px
px.line(df, x="oy", y="sotuv")           # chiziq
px.bar(df, x="kat", y="sotuv")           # ustun
px.scatter(df, x="narx", y="sotuv")      # soch
px.line(df, x="oy", y="sotuv", color="kat")  # rang = toifa

Plotly Express (px) — yuqori daraja (Seaborn kabi — DataFrame bilan bir qator): px.line, px.bar, px.scatter, px.histogram, px.pie, px.box. data, x, y argumentlar (DataFrame ustunlari). Interaktiv grafik avtomatik (zoom, hover). Tez interaktiv grafik uchun — Seaborn'ning interaktiv versiyasi. Ko'p tahlil uchun yetarli.

2.3. Grafik turlari

Har xil grafik:

python
px.line(df, x, y)          # chiziq (trend)
px.bar(df, x, y)           # ustun (taqqoslash)
px.scatter(df, x, y)       # soch (bog'lanish)
px.histogram(df, x)        # gistogramma (taqsimot)
px.pie(df, values, names)  # doiraviy (ulush)
px.box(df, x, y)           # quti (kvartil)

Plotly grafik turlari (Matplotlib/Seaborn kabi, lekin interaktiv): line (trend), bar (taqqoslash), scatter (bog'lanish), histogram (taqsimot), pie (ulush — doiraviy), box (kvartil). Har biri DataFrame bilan bir qator. Turi — savolga qarab (24.13 kabi). Interaktivlik — barchasida (zoom, hover). Har xil ko'rinish, bir API.

2.4. Rang va o'lcham

Ko'p o'zgaruvchi:

python
px.scatter(df, x="narx", y="sotuv", color="kat")     # rang = toifa
px.scatter(df, x="narx", y="sotuv", size="daromad")  # o'lcham = qiymat
px.scatter(df, x, y, color="kat", size="d", hover_data=["nom"])
px.line(df, x, y, color="kat", facet_col="hudud")    # panel

Ko'p o'zgaruvchi ko'rsatish: color="kat" (rang — toifa, Seaborn hue kabi), size="qiymat" (nuqta o'lchami — uchinchi son), hover_data=["nom"] (sichqoncha ustida qo'shimcha ma'lumot), facet_col/facet_row (panel — har toifa alohida grafik). Bu bir grafikda ko'p o'lcham (narx + sotuv + kategoriya + daromad). Interaktiv — hover bilan tafsilot.

2.5. Graph Objects (go)

Past daraja — to'liq nazorat:

python
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, mode="lines", name="A"))
fig.add_trace(go.Bar(x=x, y=y2, name="B"))
# bir grafikda chiziq + ustun (aralash)

Graph Objects (go) — past daraja (Matplotlib kabi — to'liq nazorat): go.Figure() + add_trace(go.Scatter(...)). Har trace (qatlam) — chiziq (go.Scatter), ustun (go.Bar), va h.k. Aralash grafik (chiziq + ustun), maxsus sozlash uchun. px — tez (oddiy), go — kuchli (murakkab). px natijasi ham go.Figure (birga sozlash). Murakkab holat uchun.

2.6. Grafikni bezash (update_layout)

Sarlavha, o'q, uslub:

python
fig.update_layout(
    title="2024 sotuvi",
    xaxis_title="Oy",
    yaxis_title="Sotuv",
)
fig.update_traces(marker_size=10)        # trace sozlash
fig.update_xaxes(range=[0, 100])         # o'q oraligi

update_layout — grafik umumiy sozlamalari: title (sarlavha), xaxis_title/yaxis_title (o'q nomlari), rang, o'lcham, legend. update_traces (trace — nuqta o'lchami, rang), update_xaxes/update_yaxes (o'q — oraliq, format). Bu 24.13 (Matplotlib bezash) ga o'xshaydi, lekin Plotly uslubi. Bezash — interaktiv grafikda ham muhim (o'q nomlari, sarlavha).

2.7. Saqlash (HTML)

Interaktiv grafikni saqlash:

python
fig.write_html("grafik.html")        # interaktiv HTML (brauzer)
fig.write_image("grafik.png")        # statik rasm (kaleido kerak)
fig.to_json()                        # JSON (veb ilovaga)
fig.to_html(full_html=False)         # HTML bo'lak (embed)

Plotly saqlash: write_html (interaktiv HTML — brauzerda ochiladi, zoom/hover ishlaydi), write_image (statik PNG — kaleido kutubxonasi kerak), to_json (JSON — veb ilovaga, 20-qism API), to_html(full_html=False) (HTML bo'lak — veb sahifaga joylash). Interaktivlik faqat HTML/veb'da (PNG statik). Veb, dashboard uchun HTML.

2.8. Interaktiv vs statik

Xususiyat Statik (Matplotlib) Interaktiv (Plotly)
Format Rasm (PNG) Veb (HTML)
Zoom/hover Yo'q Bor
Hisobot (PDF) Yaxshi Cheklangan
Dashboard/veb Cheklangan Yaxshi
Katta ma'lumot Qiyin Interaktiv

Statik (Matplotlib/Seaborn) — rasm (PNG/PDF — hisobot, hujjat, chop etish); interaktiv (Plotly) — veb (HTML — dashboard, veb sahifa, katta ma'lumot kashf). Tanlov: hisobot/hujjat → statik; veb/dashboard/kashf → interaktiv. Ikkalasi ham foydali (maqsadga qarab). Interaktiv — zamonaviy veb taqdimoti; statik — an'anaviy hujjat. Vositani maqsadga qarab.


3. Tez ma'lumotnoma

python
import plotly.express as px
import plotly.graph_objects as go

# Plotly Express (yuqori daraja):
px.line(df, x="oy", y="sotuv", color="kat", title="Trend")
px.bar(df, x="kat", y="sotuv")
px.scatter(df, x="narx", y="sotuv", color="kat", size="daromad")
px.histogram(df, x="narx")
px.pie(df, values="sotuv", names="kat")

# Graph Objects (past daraja):
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, mode="lines", name="A"))
fig.add_trace(go.Bar(x=x, y=y2, name="B"))

# bezash:
fig.update_layout(title="...", xaxis_title="X", yaxis_title="Y")

# saqlash:
fig.write_html("grafik.html")     # interaktiv
fig.to_json()                     # veb API

Interaktiv xulosasi

Plotly: interaktiv veb (zoom, hover) · px: yuqori (bir qator) · go: past (nazorat)
line/bar/scatter/histogram/pie · color/size/hover_data · update_layout
write_html (interaktiv) · statik(hisobot) vs interaktiv(dashboard)

4. Batafsil misollar

Misollarda Plotly bilan sinaladi. Grafik tuzilishi (trace turi, soni, layout) tekshiriladi (rasm emas). Ehtiyot: fayl nomi plotly.py bo'lmasin.

Misol 1 — Plotly Express (grafik turlari)

python
"""px: line (trend), bar (taqqoslash), scatter (bog'lanish) — DataFrame bilan interaktiv."""

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import plotly.express as px


def main() -> None:
    df = pd.DataFrame({
        "oy": [1, 2, 3, 4, 5],
        "sotuv": [100, 120, 90, 150, 130],
        "kategoriya": ["A", "B", "A", "B", "A"],
    })

    print("=== 1. px.line (chiziq — trend) ===")
    fig = px.line(df, x="oy", y="sotuv", title="Oylik sotuv")
    print(f"  trace soni: {len(fig.data)}, turi: {fig.data[0].type}")

    print("\n=== 2. px.bar (ustun — taqqoslash) ===")
    fig2 = px.bar(df, x="kategoriya", y="sotuv")
    print(f"  turi: {fig2.data[0].type}")

    print("\n=== 3. px.scatter (soch — bog'lanish) ===")
    fig3 = px.scatter(df, x="oy", y="sotuv")
    print(f"  turi: {fig3.data[0].type}")

    print("\n=== 4. Sarlavha (layout) ===")
    print(f"  line title: {fig.layout.title.text}")
    print("  ⭐ px — DataFrame bilan interaktiv grafik (bir qator)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. px.line (chiziq — trend) ===
  trace soni: 1, turi: scatter

=== 2. px.bar (ustun — taqqoslash) ===
  turi: bar

=== 3. px.scatter (soch — bog'lanish) ===
  turi: scatter

=== 4. Sarlavha (layout) ===
  line title: Oylik sotuv
  ⭐ px — DataFrame bilan interaktiv grafik (bir qator)

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

Misol 2 — Rang va o'lcham (ko'p o'zgaruvchi)

python
"""color (rang = toifa), size (o'lcham = qiymat), facet (panel) — ko'p o'zgaruvchi."""

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import plotly.express as px


def main() -> None:
    df = pd.DataFrame({
        "narx": [100, 120, 80, 150, 90, 110],
        "sotuv": [50, 40, 60, 30, 55, 45],
        "kategoriya": ["A", "B", "A", "B", "A", "B"],
        "daromad": [5000, 4800, 4800, 4500, 4950, 4950],
    })

    print("=== 1. color (rang = toifa) ===")
    fig = px.scatter(df, x="narx", y="sotuv", color="kategoriya")
    print(f"  trace soni (har toifa): {len(fig.data)}")

    print("\n=== 2. size (o'lcham = qiymat) ===")
    fig2 = px.scatter(df, x="narx", y="sotuv", size="daromad")
    print(f"  trace: {len(fig2.data)}, o'lcham qo'llandi: {fig2.data[0].marker.size is not None}")

    print("\n=== 3. color + hover_data ===")
    fig3 = px.scatter(df, x="narx", y="sotuv", color="kategoriya", hover_data=["daromad"])
    print(f"  trace soni: {len(fig3.data)}")

    print("\n=== 4. line + color (ko'p chiziq) ===")
    df_line = pd.DataFrame({
        "oy": [1, 2, 3, 1, 2, 3],
        "sotuv": [100, 120, 90, 80, 100, 110],
        "hudud": ["Toshkent", "Toshkent", "Toshkent", "Samarqand", "Samarqand", "Samarqand"],
    })
    fig4 = px.line(df_line, x="oy", y="sotuv", color="hudud")
    print(f"  chiziqlar (hudud): {len(fig4.data)}")
    print("  ⭐ color/size/hover — bir grafikda ko'p o'lcham")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. color (rang = toifa) ===
  trace soni (har toifa): 2

=== 2. size (o'lcham = qiymat) ===
  trace: 1, o'lcham qo'llandi: True

=== 3. color + hover_data ===
  trace soni: 2

=== 4. line + color (ko'p chiziq) ===
  chiziqlar (hudud): 2
  ⭐ color/size/hover — bir grafikda ko'p o'lcham

Nima ko'rsatdi: 2.4-bo'lim.

Misol 3 — Graph Objects (aralash grafik)

python
"""go: Figure + add_trace (Scatter, Bar); aralash grafik; update_layout (bezash)."""

import warnings
warnings.filterwarnings("ignore")

import plotly.graph_objects as go


def main() -> None:
    oylar = [1, 2, 3, 4, 5]

    print("=== 1. go.Figure + Scatter (chiziq) ===")
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=oylar, y=[100, 120, 90, 150, 130], mode="lines+markers", name="Sotuv"))
    print(f"  trace soni: {len(fig.data)}, turi: {fig.data[0].type}")

    print("\n=== 2. + Bar (ustun) — aralash ===")
    fig.add_trace(go.Bar(x=oylar, y=[20, 25, 18, 30, 27], name="Foyda"))
    print(f"  trace soni: {len(fig.data)}, turlar: {[t.type for t in fig.data]}")

    print("\n=== 3. update_layout (bezash) ===")
    fig.update_layout(title="Sotuv va foyda", xaxis_title="Oy", yaxis_title="Qiymat")
    print(f"  title: {fig.layout.title.text}")
    print(f"  x o'q: {fig.layout.xaxis.title.text}")

    print("\n=== 4. Trace nomlari (legend) ===")
    print(f"  nomlar: {[t.name for t in fig.data]}")
    print("  ⭐ go — to'liq nazorat (aralash grafik, trace)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. go.Figure + Scatter (chiziq) ===
  trace soni: 1, turi: scatter

=== 2. + Bar (ustun) — aralash ===
  trace soni: 2, turlar: ['scatter', 'bar']

=== 3. update_layout (bezash) ===
  title: Sotuv va foyda
  x o'q: Oy

=== 4. Trace nomlari (legend) ===
  nomlar: ['Sotuv', 'Foyda']
  ⭐ go — to'liq nazorat (aralash grafik, trace)

Nima ko'rsatdi: 2.5, 2.6-bo'limlar.

Misol 4 — Amaliy: interaktiv dashboard grafigi

Real misol: sotuv ma'lumoti — interaktiv grafik (color, hover), bezash, HTML/JSON'ga saqlash. Bu — interaktiv taqdimotning namunasi.

python
"""to'liq interaktiv: px.bar (color), update_layout, to_html/to_json (veb saqlash)."""

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import plotly.express as px


def main() -> None:
    df = pd.DataFrame({
        "mahsulot": ["Python", "Go", "Rust", "PHP", "Ruby"],
        "sotuv": [50, 30, 20, 40, 25],
        "kategoriya": ["kurs", "kurs", "kurs", "kitob", "kitob"],
    })

    print("=== 1. Interaktiv ustun grafik (color) ===")
    fig = px.bar(df, x="mahsulot", y="sotuv", color="kategoriya", title="Mahsulot sotuvi")
    print(f"  trace soni (kategoriya): {len(fig.data)}")

    print("\n=== 2. Bezash (update_layout) ===")
    fig.update_layout(xaxis_title="Mahsulot", yaxis_title="Sotuv (dona)")
    print(f"  title: {fig.layout.title.text}")
    print(f"  y o'q: {fig.layout.yaxis.title.text}")

    print("\n=== 3. HTML'ga (interaktiv, embed) ===")
    html = fig.to_html(full_html=False)
    print(f"  HTML bo'lak yaratildi: {len(html) > 100}")
    print(f"  interaktiv (plotly.js): {'plotly' in html.lower()}")

    print("\n=== 4. JSON'ga (veb API) ===")
    j = fig.to_json()
    print(f"  JSON yaratildi: {len(j) > 100}")
    print(f"  jami sotuv: {df['sotuv'].sum()}")
    print("  ⭐ px + update_layout + to_html/json — interaktiv dashboard")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Interaktiv ustun grafik (color) ===
  trace soni (kategoriya): 2

=== 2. Bezash (update_layout) ===
  title: Mahsulot sotuvi
  y o'q: Sotuv (dona)

=== 3. HTML'ga (interaktiv, embed) ===
  HTML bo'lak yaratildi: True
  interaktiv (plotly.js): True

=== 4. JSON'ga (veb API) ===
  JSON yaratildi: True
  jami sotuv: 165
  ⭐ px + update_layout + to_html/json — interaktiv dashboard

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
"Plotly = Matplotlib" Interaktiv (statik emas)
"px va go bir xil" px yuqori, go past daraja
"Interaktiv doim yaxshi" Hisobot — statik yaxshi
"Plotly PNG saqlaydi" HTML (interaktiv); PNG — kaleido
"color faqat chiroy" Toifa (ma'noli)
"Fayl nomi muhim emas" plotly.py — paketni to'sadi
"Statik eski" Hisobot uchun yaxshi
"Interaktivlik PNG'da" HTML/veb'da

6. Keng tarqalgan xatolar va yechimlari

1. Fayl nomi plotly.py

python
# plotly.py deb nomlash — import xato               # ⚠️
# boshqa nom (masalan, tahlil.py)                    # ✅

2. Interaktivlikni PNG'dan kutish

python
fig.write_image("f.png")   # statik (interaktiv emas)  # ⚠️
fig.write_html("f.html")   # interaktiv                 # ✅

3. px va go aralashtirish

python
px.line(df, ...)   # DataFrame bilan
go.Figure() + add_trace   # to'liq nazorat          # farqni bil

4. Bezash unutish

python
px.bar(df, x, y)   # o'q nomi avtomatik (ustun nomi)
fig.update_layout(title=...)   # ✅ sarlavha qo'sh

5. write_image kutubxonasi yo'q

python
fig.write_image("f.png")   # kaleido kerak            # ⚠️
# pip install kaleido yoki write_html                  # ✅

6. Katta ma'lumot (HTML og'ir)

python
# million nuqta — HTML fayl katta, sekin              # ⚠️
# namuna (sample) yoki agregatsiya                     # ✅

7. show() skriptda (brauzer ochiladi)

python
fig.show()   # brauzer ochiladi (skriptda noqulay)     # ba'zan
fig.write_html(...)   # faylga (nazorat)               # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 24.13-dars (o'tilgan): Matplotlib — statik grafik
  • 24.14-dars (o'tilgan): Seaborn — statistik grafik
  • 24.18-dars: Amaliy loyiha — dashboard
  • 20-qism (o'tilgan): FastAPI — grafik API (JSON)
  • 26-qism: Avtomatlashtirish — hisobot grafigi

8. Eng yaxshi amaliyotlar

  1. Interaktiv (veb/dashboard) — Plotly.

  2. Tez grafik — px (yuqori daraja).

  3. Murakkab/aralash — go.

  4. Ko'p o'lcham — color/size/hover_data.

  5. Beza (update_layout — sarlavha, o'q).

  6. Veb — write_html/to_json.

  7. Hisobot — statik (Matplotlib); dashboard — Plotly.

  8. Fayl nomi plotly.py bo'lmasin.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # Plotly nima?
2.  # Plotly vs Matplotlib?
3.  # px nima?
4.  # go nima?
5.  # px vs go?
6.  # color nima?
7.  # size nima?
8.  # hover_data nima?
9.  # update_layout nima?
10. # write_html nima?
11. # interaktivlik qayerda?
12. # statik vs interaktiv qachon?
Javoblar
  1. Interaktiv vizualizatsiya kutubxonasi
  2. Plotly interaktiv (veb), Matplotlib statik
  3. Plotly Express (yuqori daraja)
  4. Graph Objects (past daraja)
  5. px tez (DataFrame), go to'liq nazorat
  6. Rang = toifa
  7. Nuqta o'lchami = qiymat
  8. Sichqoncha ustida qo'shimcha ma'lumot
  9. Grafik sozlamalari (sarlavha, o'q)
  10. Interaktiv HTML'ga saqlash
  11. HTML/veb'da (PNG statik)
  12. Hisobot — statik, veb/dashboard — interaktiv

Vazifa 2: Xatolarni tuzating

python
1.  # fayl nomi plotly.py             # boshqa nom

2.  fig.write_image("f.png")  # interaktiv kutildi  # write_html

3.  px.line(df) + go.add_trace        # bittasini tanla

4.  px.bar(df, x, y)  # sarlavha-chi?  # update_layout

5.  # million nuqta HTML               # sample
Javoblar
python
1.  # tahlil.py (plotly.py emas)

2.  fig.write_html("f.html")

3.  px.line(...) yoki go.Figure() (bittasi)

4.  fig.update_layout(title=...)

5.  df.sample(1000) yoki agregatsiya

Vazifa 3: px

Grafik:

  1. px.line
  2. px.bar
  3. px.scatter
  4. Sarlavha

Vazifa 4: Ko'p o'lcham

Grafik:

  1. color
  2. size
  3. hover_data
  4. line + color

Vazifa 5: go

To'liq:

  1. go.Figure
  2. add_trace (Scatter)
  3. Aralash (Bar)
  4. update_layout

Vazifa 6: Dashboard

Interaktiv:

  1. px (color)
  2. Bezash
  3. to_html
  4. to_json

Vazifa 7: O'ylash

Statik grafik (Matplotlib — rasm) va interaktiv grafik (Plotly — veb) har xil maqsadga: statik — hisobot, hujjat, chop etish; interaktiv — dashboard, veb, katta ma'lumot kashf. Nima uchun "vositani maqsadga qarab tanlash" (statik vs interaktiv) muhim, va nega interaktivlik har doim yaxshi emas — qachan sodda statik grafik interaktivdan afzal?

Javob

Qisqa javob: Statik (Matplotlib) va interaktiv (Plotly) — har xil maqsadga: statik — hisobot, hujjat, chop etish, PDF (bir marta ko'rish, harakat kerak emas); interaktiv — dashboard, veb, katta ma'lumot (foydalanuvchi kashf qiladi — zoom, filtr). "Maqsadga qarab tanla" muhim, chunki har vosita o'z maqsadiga optimali. Interaktivlik har doim yaxshi emas: hisobot/hujjat uchun statik afzal (PDF'da interaktiv ishlamaydi; bir grafik — bir xabar, chalg'itmaydi), oddiy ma'lumot uchun interaktivlik ortiqcha (murakkablik, og'ir HTML, keraksiz), chop etish uchun statik (interaktiv qog'ozda ishlamaydi). Qoida: oddiy, bir marta ko'rish → statik; kashf, ko'p ma'lumot, veb → interaktiv. "Soddalik — standart, murakkablik — kerak bo'lganda".

1. Har xil maqsad

Statik (Matplotlib) Interaktiv (Plotly)
Hisobot, hujjat, PDF Dashboard, veb
Bir marta ko'rish Kashf (zoom, filtr)
Chop etish Ekran
Oddiy xabar Katta ma'lumot

2. Nega interaktivlik har doim emas

  • Hisobot/PDF: interaktiv ishlamaydi (qog'oz, PDF statik)
  • Oddiy ma'lumot: interaktivlik ortiqcha (murakkablik, og'ir)
  • Bir xabar: statik aniqroq (chalg'itmaydi)

3. Qachon statik afzal

  • Hisobot, hujjat, taqdimot slaydi
  • Bir marta ko'rish (harakat kerak emas)
  • Chop etish (qog'oz)
  • Oddiy, aniq xabar

4. Qachon interaktiv afzal

  • Dashboard (foydalanuvchi kashf)
  • Katta ma'lumot (zoom, filtr)
  • Veb sahifa
  • Ko'p o'lcham (hover tafsilot)

5. Muhandislik saboqlari

  1. Vosita maqsadga qarab (statik/interaktiv)
  2. Interaktivlik har doim yaxshi emas
  3. Oddiy/hisobot → statik
  4. Kashf/veb → interaktiv

6. Xulosa

  1. Statik (hujjat) va interaktiv (veb) — har xil maqsad
  2. Maqsadga qarab tanla
  3. Interaktivlik ba'zan ortiqcha
  4. Soddalik standart, murakkablik kerakda

Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.


Xulosa

Bu darsda Plotly bilan interaktiv vizualizatsiyani o'rgandik.

Eng muhim uch fikr:

  1. Plotly — interaktiv veb grafik. Plotly — interaktiv vizualizatsiya kutubxonasi: grafik veb (HTML + JavaScript) da, sichqoncha bilan boshqariladi (zoom, hover — aniq qiymat, filtr). Matplotlib/Seaborn'dan farq: interaktiv (statik emas), veb'ga mos. Plotly Express (px) — yuqori daraja (Seaborn kabi — DataFrame bilan bir qator): px.line, px.bar, px.scatter, px.histogram, px.pie, px.box. Grafik turi savolga qarab (24.13 kabi), lekin interaktiv. fig.show() (brauzer), write_html (fayl). Ehtiyot: fayl nomi plotly.py bo'lmasin (paketni to'sadi).

  2. Ko'p o'zgaruvchi va Graph Objects. Ko'p o'lcham: color="kat" (rang — toifa, Seaborn hue kabi), size="qiymat" (nuqta o'lchami), hover_data=["nom"] (sichqoncha ustida tafsilot), facet_col (panel). Graph Objects (go) — past daraja (to'liq nazorat): go.Figure() + add_trace(go.Scatter(...))/go.Bar(...) (aralash grafik — chiziq + ustun). px tez (oddiy), go kuchli (murakkab). update_layout — bezash (title, xaxis_title, yaxis_title). Saqlash: write_html (interaktiv), write_image (PNG — kaleido), to_json (veb API).

  3. Statik vs interaktiv — maqsadga qarab. Statik (Matplotlib/Seaborn) — rasm (PNG/PDF — hisobot, hujjat, chop etish, bir marta ko'rish); interaktiv (Plotly) — veb (HTML — dashboard, veb sahifa, katta ma'lumot kashf — zoom, filtr, hover). Interaktivlik har doim yaxshi emas: hisobot/PDF uchun statik afzal (interaktiv ishlamaydi), oddiy ma'lumot uchun interaktivlik ortiqcha (murakkablik). Qoida: oddiy/hisobot/chop → statik; kashf/veb/katta ma'lumot → interaktiv. "Vositani maqsadga qarab tanla" — soddalik standart, murakkablik kerakda. Interaktiv — zamonaviy veb taqdimoti.

Keyingi darsda tavsifiy statistika ni o'rganamiz: o'rtacha, mediana, standart chetlanish, kvartil — ma'lumotni sonlar bilan xulosalash 24.16-bob, taqsimot va tarqoqlikni tushunish.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
24.15-dars: Interaktiv vizualizatsiya — IlmHamroh