Főoldal / Adatvizualizáció eszközök

Adatvizualizáció modern eszközökkel: Matplotlib és tovább

Diagramtípusok és vizualizációs könyvtárak összehasonlítása: mikor melyiket érdemes választani, és milyen szempontok alapján döntsünk.

Hisztogram példa – adatvizualizáció

Az adatvizualizáció szerepe

Az adatok vizuális megjelenítése nem csupán esztétikai kérdés – az emberi agy képes a mintákat, trendeket és anomáliákat képi formában sokkal gyorsabban felismerni, mint táblázatos számok alapján. A vizualizáció az exploratory data analysis (EDA) egyik legfontosabb eszköze, de a kommunikációban és a döntéstámogatásban is meghatározó szerepet játszik.

Az Anscombe-kvartett klasszikus példa arra, hogy azonos statisztikai jellemzőkkel rendelkező adathalmazok teljesen eltérő struktúrát mutathatnak a vizualizációban. Ez egyértelműen jelzi: a numerikus összefoglalók önmagukban nem elegendők az adatok megértéséhez.

Matplotlib – az alapréteg

A Matplotlib 2003 óta a Python vizualizációs ökoszisztémájának alapköve. Az összes többi Python könyvtár valamilyen módon épül rá vagy alternatívát kínál hozzá. Legnagyobb erénye a rugalmasság: szinte minden vizuális elem testreszabható, a tengelyfeliratoktól a vonalvastagságig.

import matplotlib.pyplot as plt import numpy as np adatok = np.random.normal(loc=50, scale=10, size=500) fig, ax = plt.subplots(figsize=(8, 5)) ax.hist(adatok, bins=30, color='#5a5852', edgecolor='white', linewidth=0.5) ax.set_title('Értékek eloszlása', fontsize=14) ax.set_xlabel('Érték') ax.set_ylabel('Darabszám') ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) plt.tight_layout() plt.savefig('eloszlas.png', dpi=150)

A fig, ax objektumorientált interfész a javasolt módszer, mivel több részábra (subplot) esetén is egyértelműen kezelhető. A plt.show() és plt.savefig() alternatívaként elmenthetők a diagramok PNG, SVG vagy PDF formátumban.

Figyelemre méltó korlátok

A Matplotlib statikus diagramokat állít elő. Interaktív tartalmakhoz, zoom- vagy hover-funkcióhoz más könyvtár szükséges. Emellett az alapértelmezett stílus sok esetben igényel testreszabást az esztétikus megjelenéshez.

Seaborn – statisztikai vizualizáció

A Seaborn a Matplotlib-re épülő magas szintű könyvtár, amely statisztikai vizualizációkhoz optimalizált. Kevesebb kóddal ér el esztétikusabb alapértelmezett eredményt, és szorosan integrálódik a Pandas DataFrame-ekkel.

import seaborn as sns import pandas as pd sns.set_theme(style='whitegrid', palette='muted') df = pd.DataFrame({ 'kategoria': ['A', 'B', 'C', 'A', 'B', 'C'] * 20, 'ertek': np.random.normal(50, 15, 120) }) fig, ax = plt.subplots(figsize=(8, 5)) sns.boxplot(data=df, x='kategoria', y='ertek', ax=ax) ax.set_title('Értékek kategóriánként', fontsize=14) plt.tight_layout()

A boxplot, violinplot és stripplot különösen hasznosak eloszlások összehasonlításához. A heatmap korrelációs mátrixok vizualizálásához kényelmes megoldást nyújt.

Plotly – interaktív diagramok

A Plotly webalapú interaktív vizualizációkat készít, amelyek böngészőben futnak és közvetlenül beágyazhatók weboldalakba. A Plotly Express magas szintű API-t biztosít, míg a Plotly Graph Objects részletesebb testreszabást tesz lehetővé.

import plotly.express as px fig = px.scatter( df, x='ertek', y='ertek', color='kategoria', title='Szórásdiagram kategóriánként', labels={'ertek': 'Érték'} ) fig.update_layout(plot_bgcolor='white') fig.write_html('diagram.html')

A Plotly különösen hasznos dashboardok és webes riportok készítésekor. A Dash keretrendszerrel kombinálva teljes interaktív webalkalmazások építhetők.

Diagram típusok megválasztása

A megfelelő diagramtípus megválasztása az egyik leggyakrabban elkövetett hibaforrás az adatvizualizációban. Az alábbi irányelvek segítenek a döntésben:

Összehasonlítás

  • Oszlopdiagram (bar chart): diszkrét kategóriák értékeinek összehasonlítása
  • Csoportosított oszlopdiagram: több dimenzió párhuzamos összehasonlítása
  • Boxplot: eloszlások és mediánok összehasonlítása csoportok között

Trendek és idősorok

  • Vonaldiagram (line chart): folyamatos idősoradatok megjelenítése
  • Területdiagram (area chart): kumulatív értékek vagy arányok időbeli változása

Eloszlás

  • Hisztogram: értékek frekvenciaeloszlása
  • KDE-görbe (kernel density estimate): folyamatos eloszlás becslése
  • Violinplot: eloszlás és mediáninformáció kombinációja

Összefüggések

  • Szórásdiagram (scatter plot): két folyamatos változó kapcsolata
  • Hőtérkép (heatmap): korrelációs mátrixok vagy kétdimenziós frekvenciák
  • Buborékdiagram: három változó egyidejű megjelenítése

Scatter diagram – szórásdiagram

Szórásdiagram minőségi jellemzőkre

Korreláció vizualizálása

A szórásdiagram két folyamatos változó közötti kapcsolatot mutatja. A pontok elhelyezkedése jelzi, hogy van-e lineáris, nemlineáris vagy éppen semmiféle korreláció a változók között.

Minőségirányításban a szórásdiagram egyik leggyakoribb eszköz – például egy gyártási paraméter és a termékhibák száma közötti összefüggés vizsgálatára.

Jó gyakorlatok

A vizualizáció célja az információ hatékony közvetítése, nem az esztétika. Néhány általánosan elfogadott irányelv:

  • A tengelyskálák mindig mutassák a nulla értéket, ha az értelmes az adott kontextusban
  • Kerülendő a 3D diagram numerikus adatoknál – az arányok torzulnak
  • A kördiagramok max. 4-5 szegmens esetén hatékonyak
  • Színválasztásnál figyelembe kell venni a színvakságot – kerülendő a piros-zöld kombináció
  • A felesleges rácsok és "chart junk" csökkenti az olvashatóságot
Hivatkozás

Edward Tufte The Visual Display of Quantitative Information könyve az adatvizualizáció egyik alapmunkája. Digitálisan nem érhető el szabadon, de sok könyvtárban megtalálható. A Matplotlib dokumentációjában (matplotlib.org/gallery) számos kódpélda és galéria segíti a megvalósítást.

Kapcsolódó cikkek