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:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4])
plt.show()

Alap vonaldiagram (line plot)

Példa

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5)
y = x ** 2

plt.plot(x, y)
plt.show()

Feladat? Hozz létre x = 0–10 közötti értékeket. Számold ki y = 2x + 1. Ábrázold.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 11)
y = 2 * x + 1

plt.plot(x, y)
plt.show()

Címek és tengelyfeliratok

Példa:

plt.title("Grafikon címe")
plt.xlabel("X tengely")
plt.ylabel("Y tengely")

Feladat: Az előző grafikont egészítsd ki:

  • címmel
  • tengelyfeliratokkal

plt.plot(x, y)
plt.title("Lineáris függvény")
plt.xlabel("x érték")
plt.ylabel("y = 2x + 1")
plt.show()

Több adat egy grafikonon

Példa

x = np.arange(0, 10)

plt.plot(x, x, label="y = x")
plt.plot(x, x**2, label="y = x^2")

plt.legend()
plt.show()

Feladat:

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

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10)

plt.plot(x, x, label="x")
plt.plot(x, x**2, label="x^2")
plt.plot(x, x**3, label="x^3")

plt.legend()
plt.title("Hatványfüggvények")
plt.show()

Pontdiagram (scatter plot)

Példa

x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y)
plt.show()

Feladat: Generálj 100 véletlen pontot. Ábrázold scatter plotként

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()

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

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()

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.

 
import numpy as np import matplotlib.pyplot as plt

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

y1 = x**2
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()

3. Feladat – Vizsgaeredmények vizualizálása

  1. Generálj egy 10×4-es pontszám mátrixot (0–100).
  2. Számold ki tantárgyanként az átlagot.
  3. Készíts oszlopdiagramot az átlagokról.
  4. Állíts be:
    1. címet
    2. tengelyfeliratokat
    3. rácsvonalat
  5. Ábrázold az átlagértékeket a sávok felett.

 
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()

4. Feladat – Idősor vizualizáció

  1. Generálj 365 napos hőmérséklet adatot.
  2. Számíts 7 napos mozgóátlagot.
  3. Ábrázold:
    1. napi adatokat halvány vonallal
    2. mozgóátlagot vastag vonallal
  4. Adj címet és tengelyfeliratokat.
  5. Emeld ki a 30°C feletti napokat külön jelöléssel.

 
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()

5. Feladat – Mátrix vizualizáció (hőtérkép alap)

  1. Generálj 20×20-as véletlen mátrixot.
  2. Ábrázold imshow() segítségével.
  3. Adj színskálát (colorbar).
  4. Adj címet.
  5. Jelöld a tengelyeket.

 
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()

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.

 
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()

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