User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:matplotlib_i._alap_plotok

Matplotlib I – alap plotok, tengelyek, címek, vizualizáció alapelvek

Mi az adatvizualizáció?

A vizualizáció célja:

  • trendek felismerése
  • összehasonlítás
  • kiugró értékek azonosítása

Használt könyvtár:

  • import matplotlib.pyplot as plt

Példa: <sxh python> import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4]) plt.show() </sxh>

Alap vonaldiagram (line plot)

Példa <sxh python> import numpy as np import matplotlib.pyplot as plt

x = np.arange(0, 5) y = x 2 plt.plot(x, y) plt.show() </sxh> Feladat? Hozz létre x = 0–10 közötti értékeket. Számold ki y = 2x + 1. Ábrázold. <sxh python> import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 11) y = 2 * x + 1 plt.plot(x, y) plt.show() </sxh> ==== Címek és tengelyfeliratok ==== Példa: <sxh python> plt.title(“Grafikon címe”) plt.xlabel(“X tengely”) plt.ylabel(“Y tengely”) </sxh> Feladat: Az előző grafikont egészítsd ki: * címmel * tengelyfeliratokkal <sxh python> plt.plot(x, y) plt.title(“Lineáris függvény”) plt.xlabel(“x érték”) plt.ylabel(“y = 2x + 1”) plt.show() </sxh> ==== Több adat egy grafikonon ==== Példa <sxh python> x = np.arange(0, 10) plt.plot(x, x, label=“y = x”) plt.plot(x, x2, label=“y = x^2”)

plt.legend() plt.show() </sxh>

Feladat:

  • Ábrázold egy grafikonon:
    • y = x
    • y = x²
    • y = x³
  • Adj legendát

<sxh python> import numpy as np import matplotlib.pyplot as plt

x = np.arange(0, 10)

plt.plot(x, x, label=“x”) plt.plot(x, x2, label=“x^2”) plt.plot(x, x3, label=“x^3”)

plt.legend() plt.title(“Hatványfüggvények”) plt.show() </sxh>

Pontdiagram (scatter plot)

Példa <sxh python> x = np.random.rand(50) y = np.random.rand(50) plt.scatter(x, y) plt.show() </sxh>

Feladat: Generálj 100 véletlen pontot. Ábrázold scatter plotként <sxh python> import numpy as np import matplotlib.pyplot as plt

x = np.random.rand(100) y = np.random.rand(100)

plt.scatter(x, y) plt.title(“Véletlen pontok”) plt.show() </sxh>

Vizualizáció alapelvek

  1. Mindig adj címet
  2. Jelöld a tengelyeket
  3. Ne zsúfold túl a grafikont
  4. A grafikon válaszoljon egy konkrét kérdésre

Összefoglaló feladatok

1.feladat: Készíts a bevétel mátrixot. Számold ki az évenkénti összbevételt. Ábrázold oszlopdiagramon

<sxh python> import numpy as np import matplotlib.pyplot as plt

np.random.seed(0) bevetel = np.random.randint(100, 501, size=(3, 12))

ossz_bevetel = bevetel.sum(axis=1) evek = [“1. év”, “2. év”, “3. év”]

plt.bar(evek, ossz_bevetel) plt.title(“Évenkénti bevétel”) plt.ylabel(“Összeg”) plt.show() </sxh>

2. Feladat – Függvények összehasonlító ábrázolása

  1. Generálj 0 és 10 közötti 200 pontot.
  2. Ábrázold egy grafikonon:
    • ​y = x^2
    • y = ✔x
  3. Adj címet az ábrának.
  4. Jelöld a tengelyeket.
  5. Adj jelmagyarázatot.
  6. Használj különböző vonalstílust.

<sxh python> import numpy as np import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)

y1 = x2 y2 = np.sqrt(x) plt.figure(figsize=(8,5)) plt.plot(x, y1, label=“y = x^2”, linestyle=“-”) plt.plot(x, y2, label=“y = sqrt(x)”, linestyle=“–”) plt.title(“Függvények összehasonlítása”) plt.xlabel(“X tengely”) plt.ylabel(“Y tengely”) plt.legend() plt.grid(True) plt.show() </sxh> 3. Feladat – Vizsgaeredmények vizualizálása - Generálj egy 10×4-es pontszám mátrixot (0–100). - Számold ki tantárgyanként az átlagot. - Készíts oszlopdiagramot az átlagokról. - Állíts be: - címet - tengelyfeliratokat - rácsvonalat - Ábrázold az átlagértékeket a sávok felett. <sxh python> import numpy as np import matplotlib.pyplot as plt np.random.seed(0) pontok = np.random.randint(0, 101, (10, 4)) atlagok = np.mean(pontok, axis=0) tantargyak = [“Matek”, “Fizika”, “Info”, “Töri”] plt.figure(figsize=(8,5)) bars = plt.bar(tantargyak, atlagok) plt.title(“Tantárgyi átlagpontszámok”) plt.xlabel(“Tantárgy”) plt.ylabel(“Átlagpontszám”) plt.grid(axis=“y”) for bar in bars: height = bar.get_height() plt.text(bar.get_x() + bar.get_width()/2, height, f“{height:.1f}”, ha='center', va='bottom') plt.show() </sxh> 4. Feladat – Idősor vizualizáció - Generálj 365 napos hőmérséklet adatot. - Számíts 7 napos mozgóátlagot. - Ábrázold: - napi adatokat halvány vonallal - mozgóátlagot vastag vonallal - Adj címet és tengelyfeliratokat. - Emeld ki a 30°C feletti napokat külön jelöléssel. <sxh python> import numpy as np import matplotlib.pyplot as plt np.random.seed(1) napok = np.arange(365) homerseklet = np.random.normal(20, 10, 365) kernel = np.ones(7) / 7 mozgo_atlag = np.convolve(homerseklet, kernel, mode=“valid”) plt.figure(figsize=(10,5)) plt.plot(napok, homerseklet, alpha=0.4, label=“Napi hőmérséklet”) plt.plot(napok[6:], mozgo_atlag, linewidth=3, label=“7 napos mozgóátlag”) hot_days = homerseklet > 30 plt.scatter(napok[hot_days], homerseklet[hot_days], marker=“o”) plt.title(“Éves hőmérséklet alakulása”) plt.xlabel(“Nap”) plt.ylabel(“Hőmérséklet (°C)”) plt.legend() plt.grid(True) plt.show() </sxh> 5. Feladat – Mátrix vizualizáció (hőtérkép alap) - Generálj 20×20-as véletlen mátrixot. - Ábrázold imshow() segítségével. - Adj színskálát (colorbar). - Adj címet. - Jelöld a tengelyeket. <sxh python> import numpy as np import matplotlib.pyplot as plt np.random.seed(2) matrix = np.random.rand(20, 20) plt.figure(figsize=(6,6)) img = plt.imshow(matrix) plt.colorbar(img) plt.title(“Véletlen mátrix hőtérkép”) plt.xlabel(“Oszlop index”) plt.ylabel(“Sor index”) plt.show() </sxh> 6. Feladat – Bevételi adatok több grafikonon**

  1. Generálj 12 hónap × 3 üzlet bevételi adatot.
  2. Ábrázold:
    1. vonaldiagramon az üzletek havi bevételét
    2. külön grafikonon az éves összbevételt oszlopdiagramként
  3. Használj subplot()-ot.
  4. Adj címeket és jelmagyarázatot.

<sxh python> import numpy as np import matplotlib.pyplot as plt

np.random.seed(3) bevetel = np.random.randint(1000, 5000, (12, 3))

honapok = np.arange(1, 13)

plt.figure(figsize=(10,8))

#1. grafikon plt.subplot(2,1,1) plt.plot(honapok, bevetel[:,0], label=“Üzlet 1”) plt.plot(honapok, bevetel[:,1], label=“Üzlet 2”) plt.plot(honapok, bevetel[:,2], label=“Üzlet 3”)

plt.title(“Havi bevételek”) plt.xlabel(“Hónap”) plt.ylabel(“Bevétel”) plt.legend() plt.grid(True)

#2. grafikon plt.subplot(2,1,2) eves = np.sum(bevetel, axis=0) plt.bar([“Üzlet 1”, “Üzlet 2”, “Üzlet 3”], eves)

plt.title(“Éves bevétel üzletenként”) plt.xlabel(“Üzlet”) plt.ylabel(“Összes bevétel”) plt.grid(axis=“y”)

plt.tight_layout() plt.show() </sxh>

tanszek/oktatas/muszaki_informatika/matplotlib_i._alap_plotok.txt · Last modified: 2026/02/27 08:14 by szabom