Miért érdemes Pythonban vizualizálni az adatokat?
Az adatvizualizáció az adatelemzés egyik legfontosabb lépése – mégis meglepően sokan ugorják át, vagy épp csak ráhúznak egy gyors diagramot, aztán továbbmennek. Pedig őszintén? Egy jól elkészített grafikon néha többet mond, mint egy százsoros elemzés. Ha valaha is meredtél már egy táblázatra tele számokkal, és fogalmad sem volt, mit kellene kiolvasni belőle – nos, pontosan ezt a problémát oldja meg a vizualizáció.
A Python ökoszisztémában két könyvtár uralja a vizualizáció világát: a Matplotlib és a Seaborn. A Matplotlib az alap, a fundamentum – szinte bármilyen diagramot elkészíthetsz vele, bár néha kicsit macerás tud lenni a szintaxisa. A Seaborn erre épül rá, és statisztikai grafikonokat tesz egyszerűvé. (Ráadásul alapból sokkal szebben néznek ki a diagramok, ami nem elhanyagolható szempont.)
Ebben az útmutatóban mindkettőt részletesen bemutatom, működő kódpéldákkal, amelyeket azonnal kipróbálhatsz. Na, vágjunk bele!
A cikkben a Matplotlib 3.10 és a Seaborn 0.13.2 verziókat használjuk – ezek a 2026. márciusi legfrissebb stabil kiadások.
Környezet beállítása
Kezdjük a legegyszerűbb résszel: a telepítéssel. Ha Jupyter Notebookot használsz (amit vizualizációhoz erősen ajánlok), az alábbi parancsot futtasd egy cellában:
pip install matplotlib seaborn pandas numpy
Ezután importáld a könyvtárakat:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
# Seaborn alapértelmezett stílus beállítása
sns.set_theme(style="whitegrid")
print(f"Matplotlib verzió: {plt.matplotlib.__version__}")
print(f"Seaborn verzió: {sns.__version__}")
A sns.set_theme() hívás egyszerre állítja be a Seaborn és a Matplotlib stílusát is, szóval a Matplotlib diagramjaid is szebben fognak kinézni ettől. Ha visszaállnál az alap Matplotlib stílusra, használd a plt.style.use("default") parancsot.
Matplotlib alapok: Az első diagramod
A Matplotlib a Python legrégebbi és legszélesebb körben használt vizualizációs könyvtára. Az pyplot modul egy egyszerű, MATLAB-szerű felületet kínál, amivel gyorsan összedobhatsz egy grafikont.
Vonaldiagram
# Egyszerű vonaldiagram
honapok = ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún",
"Júl", "Aug", "Szep", "Okt", "Nov", "Dec"]
homerseklet = [0, 2, 8, 14, 19, 23, 25, 24, 19, 13, 6, 1]
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(honapok, homerseklet, marker="o", color="#2196F3", linewidth=2)
ax.set_title("Havi átlaghőmérséklet Budapesten", fontsize=14)
ax.set_xlabel("Hónap")
ax.set_ylabel("Hőmérséklet (°C)")
ax.fill_between(range(len(honapok)), homerseklet, alpha=0.1, color="#2196F3")
plt.tight_layout()
plt.show()
Figyeld meg az fig, ax = plt.subplots() szintaxist – ez az úgynevezett objektumorientált megközelítés, amit a Matplotlib dokumentáció is ajánl a sima plt.plot() helyett. Több kontrollod van az ábra felett, és hosszú távon könnyebb bővíteni. Saját tapasztalatból mondom: érdemes ezt a formát megszokni, mert bonyolultabb ábráknál rengeteg időt spórol meg.
Oszlopdiagram
# Csoportos oszlopdiagram
kategoriak = ["Python", "R", "Julia", "MATLAB", "Scala"]
hasznalat_2024 = [68, 15, 5, 7, 5]
hasznalat_2026 = [72, 13, 7, 4, 4]
x = np.arange(len(kategoriak))
szelesseg = 0.35
fig, ax = plt.subplots(figsize=(9, 5))
bar1 = ax.bar(x - szelesseg/2, hasznalat_2024, szelesseg, label="2024", color="#FF9800")
bar2 = ax.bar(x + szelesseg/2, hasznalat_2026, szelesseg, label="2026", color="#4CAF50")
ax.set_ylabel("Használati arány (%)")
ax.set_title("Adattudományi nyelvek népszerűsége")
ax.set_xticks(x)
ax.set_xticklabels(kategoriak)
ax.legend()
ax.bar_label(bar1, fmt="%.0f%%")
ax.bar_label(bar2, fmt="%.0f%%")
plt.tight_layout()
plt.show()
Szórásdiagram (scatter plot)
# Szórásdiagram mérettel és színnel
np.random.seed(42)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100) * 0.5
meretek = np.abs(x) * 200
szinek = y
fig, ax = plt.subplots(figsize=(8, 6))
scatter = ax.scatter(x, y, s=meretek, c=szinek, cmap="viridis", alpha=0.7, edgecolors="white")
ax.set_xlabel("X változó")
ax.set_ylabel("Y változó")
ax.set_title("Szórásdiagram – Változók közötti kapcsolat")
plt.colorbar(scatter, label="Y érték")
plt.tight_layout()
plt.show()
A cmap paraméter a színpalettát határozza meg. A viridis a legelterjedtebb választás, mert perceptuálisan egyenletes és színvak-barát – ami szerintem alapvető szempont kellene legyen minden vizualizációnál.
Több diagram egy ábrán (subplot)
# 2x2 elrendezés különböző diagramtípusokkal
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# Vonaldiagram
axes[0, 0].plot(honapok, homerseklet, "o-", color="#E91E63")
axes[0, 0].set_title("Vonaldiagram")
# Hisztogram
adat = np.random.normal(170, 10, 500)
axes[0, 1].hist(adat, bins=25, color="#9C27B0", edgecolor="white")
axes[0, 1].set_title("Hisztogram – Magasságeloszlás")
# Kördiagram
cimkek = ["Desktop", "Mobil", "Tablet"]
aranyok = [55, 38, 7]
axes[1, 0].pie(aranyok, labels=cimkek, autopct="%1.1f%%",
colors=["#2196F3", "#FF9800", "#4CAF50"])
axes[1, 0].set_title("Eszközhasználat")
# Oszlopdiagram
axes[1, 1].barh(kategoriak, hasznalat_2026, color="#00BCD4")
axes[1, 1].set_title("Vízszintes oszlopdiagram")
plt.suptitle("Matplotlib diagramtípusok", fontsize=16, y=1.02)
plt.tight_layout()
plt.show()
Seaborn: Szebb grafikonok, kevesebb kód
A Seaborn a Matplotlib-re épülő magas szintű könyvtár, amit kifejezetten statisztikai vizualizációkra terveztek. A legnagyobb előnye? Közvetlenül tud dolgozni pandas DataFrame-ekkel, és az oszlopnevekre hivatkozhatsz paraméterként.
Ráadásul alapból szebb diagramokat készít, mint a nyers Matplotlib. Ez nem túlzás – tényleg érezhető a különbség.
Minta adathalmaz betöltése
A Seaborn beépített adathalmazokkal érkezik, amelyeket kiválóan lehet gyakorlásra használni:
# Seaborn beépített adathalmaz
tips = sns.load_dataset("tips")
print(tips.head())
print(f"\nSorok: {len(tips)}, Oszlopok: {len(tips.columns)}")
print(tips.dtypes)
Eloszlás vizualizáció: histplot és kdeplot
# Hisztogram + KDE görbe
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# Hisztogram
sns.histplot(data=tips, x="total_bill", bins=20, kde=True,
color="#3F51B5", ax=axes[0])
axes[0].set_title("Számla összeg eloszlása")
# KDE diagram csoportosítva
sns.kdeplot(data=tips, x="total_bill", hue="time",
fill=True, alpha=0.4, ax=axes[1])
axes[1].set_title("Eloszlás – Ebéd vs. Vacsora")
plt.tight_layout()
plt.show()
A histplot a korábbi distplot utódja (ami a 0.13-as verziótól már nem elérhető, szóval ha régi tutorialokat nézel, ne lepődj meg, ha nem működik). A kde=True paraméterrel rárajzolhatod a Kernel Density Estimation görbét is a hisztogramra.
Kategorikus adatok: boxplot, violinplot, swarmplot
A kategorikus adatok vizualizálása a Seaborn igazi erőssége. Három fő diagramtípust érdemes ismerni, és mindegyiknek megvan a maga helye:
# Boxplot, Violin plot, Swarmplot összehasonlítás
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
# Boxplot – összefoglaló statisztikák
sns.boxplot(data=tips, x="day", y="total_bill", palette="Set2", ax=axes[0])
axes[0].set_title("Boxplot – Számla napok szerint")
# Violin plot – eloszlás alakja is látható
sns.violinplot(data=tips, x="day", y="total_bill", hue="sex",
split=True, palette="muted", ax=axes[1])
axes[1].set_title("Violin plot – Nemek szerint bontva")
# Swarmplot – egyedi adatpontok
sns.swarmplot(data=tips, x="day", y="total_bill",
hue="sex", palette="dark", size=4, ax=axes[2])
axes[2].set_title("Swarmplot – Minden adatpont")
plt.tight_layout()
plt.show()
Melyiket válaszd? Röviden:
- Boxplot: gyors áttekintés a medián, kvartilisek és kiugró értékek megjelenítéséhez. Ideális, ha sok csoportot kell összehasonlítanod.
- Violin plot: a boxplot minden információját tartalmazza, plusz az eloszlás alakját is mutatja. Különösen hasznos, ha többcsúcsú eloszlásokra vagy kíváncsi.
- Swarmplot: minden adatpontot egyedileg ábrázol. Kis adathalmazoknál (mondjuk 200 sor alatt) fantasztikus, de nagy adathalmaz esetén sajnos olvashatatlanná válik.
Korrelációs hőtérkép
A hőtérkép (heatmap) az egyik kedvencem – és egyike a leggyakrabban használt vizualizációknak feltáró adatelemzésnél (EDA). Segít gyorsan azonosítani, mely változók között van erős lineáris kapcsolat.
# Korrelációs hőtérkép
numerikus_df = tips.select_dtypes(include=[np.number])
korrelacio = numerikus_df.corr()
fig, ax = plt.subplots(figsize=(8, 6))
sns.heatmap(korrelacio, annot=True, cmap="RdYlBu_r", center=0,
fmt=".2f", linewidths=0.5, square=True, ax=ax)
ax.set_title("Korrelációs mátrix – Tips adathalmaz")
plt.tight_layout()
plt.show()
Az annot=True ráírja a számértékeket a cellákra, ami szinte mindig hasznos. Az RdYlBu_r kiváló paletta korrelációs mátrixokhoz, mert a pozitív korrelációt pirossal, a negatívat kékkel jelöli. Az center=0 pedig biztosítja, hogy a semleges (0) érték a színskála közepén legyen.
Pairplot: Minden változó minden változóval
# Pairplot – változópárok közötti kapcsolat
sns.pairplot(tips, hue="sex", palette="husl",
diag_kind="kde", corner=True)
plt.suptitle("Pairplot – Tips adathalmaz", y=1.02)
plt.show()
A pairplot az EDA egyik leghatékonyabb eszköze: egyetlen hívással megmutatja az összes numerikus változó közötti kapcsolatot, csoportosítva egy kategorikus változó szerint. A corner=True paraméterrel fél háromszöget kapsz, ami jóval könnyebben olvasható. Én általában ezzel kezdem a feltáró elemzést – meglepő, milyen gyakran bukkannak fel érdekesebb összefüggések, mint amire számítottam.
Haladó technikák: FacetGrid és relplot
Amikor egyetlen diagram nem elég, és több részhalmaz szerint szeretnéd bontani az adatokat, a Seaborn FacetGrid és relplot funkciói jönnek képbe. Ezek igazán hasznosak, ha egy változó hatását több szempont szerint is meg akarod vizsgálni egyszerre.
Relplot – relációs diagramok csoportosítva
# Szórásdiagram napok szerint bontva (faceting)
sns.relplot(
data=tips,
x="total_bill",
y="tip",
col="time",
hue="smoker",
style="smoker",
size="size",
sizes=(50, 200),
palette="Set1",
facet_kws={"sharey": True}
)
plt.suptitle("Borravaló vs. Számla összeg", y=1.03)
plt.show()
Catplot – kategorikus diagramok facetinggel
# Boxplot bontva napszak és nap szerint
sns.catplot(
data=tips,
x="day",
y="total_bill",
col="time",
kind="box",
palette="pastel",
height=5,
aspect=1.2
)
plt.suptitle("Számla eloszlása napszak és nap szerint", y=1.03)
plt.show()
Stílusok és testreszabás
A Seaborn öt beépített stílust kínál, amelyekkel egy pillanat alatt megváltoztathatod diagramjaid kinézetét. Érdemes kipróbálni mindegyiket, mert más-más kontextusban más stílus működik jobban:
# Stílusok összehasonlítása
stilusok = ["whitegrid", "darkgrid", "white", "dark", "ticks"]
fig, axes = plt.subplots(1, 5, figsize=(20, 4))
for ax, stilus in zip(axes, stilusok):
with sns.axes_style(stilus):
ax.plot([1, 2, 3, 4], [1, 4, 2, 3], "o-")
ax.set_title(stilus)
plt.suptitle("Seaborn stílusok összehasonlítása", fontsize=14, y=1.05)
plt.tight_layout()
plt.show()
Színpaletták kiválasztása
# Különböző paletta típusok
fig, axes = plt.subplots(2, 2, figsize=(14, 8))
# Kvalitatív – különböző kategóriákhoz
sns.boxplot(data=tips, x="day", y="total_bill",
palette="Set2", ax=axes[0, 0])
axes[0, 0].set_title("Kvalitatív: Set2")
# Szekvenciális – növekvő értékekhez
sns.boxplot(data=tips, x="day", y="total_bill",
palette="Blues", ax=axes[0, 1])
axes[0, 1].set_title("Szekvenciális: Blues")
# Divergáló – középpont körüli eltérésekhez
korr = tips.select_dtypes(include=[np.number]).corr()
sns.heatmap(korr, cmap="RdBu_r", center=0, annot=True,
fmt=".2f", ax=axes[1, 0])
axes[1, 0].set_title("Divergáló: RdBu_r")
# Perceptuálisan egyenletes
sns.scatterplot(data=tips, x="total_bill", y="tip",
hue="size", palette="viridis", ax=axes[1, 1])
axes[1, 1].set_title("Perceptuálisan egyenletes: viridis")
plt.tight_layout()
plt.show()
Fontos szabály a paletták kiválasztásához (ezt tényleg érdemes megjegyezni):
- Kvalitatív (Set1, Set2, Paired): különböző kategóriákhoz, ahol nincs természetes sorrend.
- Szekvenciális (Blues, Greens, viridis): növekvő értékekhez, ahol a szín intenzitása hordozza az információt.
- Divergáló (RdBu, coolwarm, RdYlGn): amikor van egy középpont (pl. 0), és mindkét irányba eltérnek az értékek.
Diagramok mentése és exportálása
Ha publikáció-kész diagramokat szeretnél készíteni, a megfelelő felbontás és formátum elengedhetetlen:
# Ábra mentése különböző formátumokban
fig, ax = plt.subplots(figsize=(10, 6))
sns.boxplot(data=tips, x="day", y="total_bill", palette="Set2", ax=ax)
ax.set_title("Számla eloszlása napok szerint")
# PNG – webre (300 DPI a minőséghez)
fig.savefig("boxplot_napok.png", dpi=300, bbox_inches="tight",
facecolor="white")
# SVG – vektoros formátum (prezentációkhoz, cikkekhez)
fig.savefig("boxplot_napok.svg", bbox_inches="tight")
# PDF – nyomtatáshoz
fig.savefig("boxplot_napok.pdf", bbox_inches="tight")
plt.show()
print("Ábrák elmentve!")
A bbox_inches="tight" paraméter levágja a felesleges fehér szegélyeket. És egy fontos apróság, amit sok kezdő elront: ha Jupyter Notebookból mentesz, mindig a plt.show() előtt hívd meg a savefig()-et, különben üres képet kapsz. Komolyan, ez az egyik leggyakoribb „miért üres a fájlom?" kérdés.
Valós példa: Lakásárak elemzése vizualizációval
Elmélet elég volt, lássunk egy összefüggő gyakorlati példát! Az adatgeneráltástól a végső ábrákig mindent bemutatunk. Budapesti lakásárakat fogunk szimulálni és elemezni – mert valljuk be, ki ne lenne kíváncsi az ingatlanárakra?
# Szintetikus lakásár adathalmaz létrehozása
np.random.seed(2026)
n = 500
lakasok = pd.DataFrame({
"terulet_m2": np.random.normal(75, 25, n).clip(25, 200).astype(int),
"szobak": np.random.choice([1, 2, 3, 4, 5], n, p=[0.1, 0.3, 0.35, 0.2, 0.05]),
"kerulet": np.random.choice(["Belváros", "Buda", "Pest", "Külváros"], n,
p=[0.2, 0.25, 0.35, 0.2]),
"allapot": np.random.choice(["Újszerű", "Felújított", "Közepes", "Felújítandó"], n,
p=[0.15, 0.3, 0.35, 0.2]),
"epites_ev": np.random.randint(1950, 2025, n)
})
# Ár generálása az attribútumok alapján
alap_ar = lakasok["terulet_m2"] * 800000
kerulet_szorzo = lakasok["kerulet"].map(
{"Belváros": 1.5, "Buda": 1.3, "Pest": 1.0, "Külváros": 0.7}
)
allapot_szorzo = lakasok["allapot"].map(
{"Újszerű": 1.3, "Felújított": 1.1, "Közepes": 0.9, "Felújítandó": 0.7}
)
lakasok["ar_mft"] = (alap_ar * kerulet_szorzo * allapot_szorzo / 1_000_000
+ np.random.normal(0, 5, n)).round(1)
lakasok["ar_mft"] = lakasok["ar_mft"].clip(5, 250)
print(lakasok.head(10))
print(f"\nÁtlagár: {lakasok['ar_mft'].mean():.1f} MFt")
print(f"Mediánár: {lakasok['ar_mft'].median():.1f} MFt")
# Komplex vizualizáció: 2x2 dashboard
fig, axes = plt.subplots(2, 2, figsize=(16, 12))
# 1. Ár eloszlása kerületek szerint (violin plot)
sns.violinplot(data=lakasok, x="kerulet", y="ar_mft",
palette="muted", inner="box", ax=axes[0, 0])
axes[0, 0].set_title("Lakásárak eloszlása kerületek szerint")
axes[0, 0].set_xlabel("Kerület")
axes[0, 0].set_ylabel("Ár (millió Ft)")
# 2. Terület vs. ár szórásdiagram
sns.scatterplot(data=lakasok, x="terulet_m2", y="ar_mft",
hue="kerulet", style="allapot", alpha=0.6,
palette="deep", ax=axes[0, 1])
axes[0, 1].set_title("Terület vs. Ár kapcsolata")
axes[0, 1].set_xlabel("Terület (m²)")
axes[0, 1].set_ylabel("Ár (millió Ft)")
# 3. Átlagár állapot és kerület szerint (hőtérkép)
pivot = lakasok.pivot_table(values="ar_mft", index="allapot",
columns="kerulet", aggfunc="mean")
sns.heatmap(pivot, annot=True, fmt=".1f", cmap="YlOrRd",
ax=axes[1, 0])
axes[1, 0].set_title("Átlagár (MFt) – Állapot × Kerület")
# 4. Szobaszám szerinti boxplot
sns.boxplot(data=lakasok, x="szobak", y="ar_mft",
palette="coolwarm", ax=axes[1, 1])
axes[1, 1].set_title("Áreloszlás szobaszám szerint")
axes[1, 1].set_xlabel("Szobák száma")
axes[1, 1].set_ylabel("Ár (millió Ft)")
plt.suptitle("Budapesti lakásár elemzés – 2026", fontsize=16, y=1.02)
plt.tight_layout()
plt.show()
Matplotlib vs. Seaborn: Mikor melyiket használd?
Ez az egyik leggyakrabban feltett kérdés, úgyhogy itt egy gyors összefoglaló:
| Feladat | Ajánlott eszköz | Miért? |
|---|---|---|
| Egyszerű vonal/oszlopdiagram | Matplotlib | Teljes kontroll, minimális overhead |
| Statisztikai eloszlás vizualizáció | Seaborn | Beépített KDE, automatikus csoportosítás |
| Hőtérkép / korrelációs mátrix | Seaborn | Egy soros kód, automatikus annotáció |
| Feltáró adatelemzés (EDA) | Seaborn | pairplot, catplot egy hívással |
| Prezentációs ábra, publikáció | Matplotlib + Seaborn | Seaborn az alaphoz, Matplotlib a finomhangoláshoz |
| Interaktív dashboard | Plotly / Bokeh | Matplotlib és Seaborn statikus – interaktivitáshoz más kell |
| Egyedi, nem-standard ábra | Matplotlib | Bármit megrajzolhatsz vele, csak idő kérdése |
Gyakori hibák és megoldásaik
Kezdőként – és őszintén szólva néha haladóként is – rengeteg apró csapdába lehet beleesni a vizualizáció során. Íme a leggyakoribbak, hogy ne kelljen saját károtokon tanulni:
- Üres kép mentésekor: A
savefig()-et mindig aplt.show()előtt hívd meg. Ashow()törli az ábrát a memóriából – ezt már említettem, de annyira gyakori hiba, hogy megér egy ismétlést. - Átfedő feliratok: Használd a
plt.tight_layout()vagyfig.autofmt_xdate()függvényt. Ha az x tengely címkéi hosszúak, forgasd el őket:plt.xticks(rotation=45). - FutureWarning a Seaborn-tól: A 0.13-as verziótól a
distplotés társai elavultak. Használd ahistplot-ot és az új API-t – a régi tutorialok sajnos elavultak lehetnek. - Memóriaprobléma sok diagram után: Hívd meg a
plt.close("all")parancsot, miután elmentetted az ábrát. Jupyter Notebookban ez különösen fontos, mert a háttérben szép lassan megesznek a memóriát az el nem zárt figurák. - Rossz paletta választás: Színtévesztők számára kerüld a piros-zöld kombinációkat. A
viridis,cividiséscolorblindpaletták biztonságos választások.
Gyakran ismételt kérdések (GYIK)
Mi a különbség a Matplotlib és a Seaborn között?
A Matplotlib egy alacsony szintű vizualizációs könyvtár, amellyel szinte bármilyen diagramtípust elkészíthetsz, de több kódot igényel. A Seaborn erre épül rá, és a statisztikai grafikonokat teszi egyszerűvé – kevesebb kóddal szebb és informatívabb ábrákat készíthetsz. A gyakorlatban a legjobb eredményt a kettő kombinálásával éred el: Seaborn az alaphoz, Matplotlib a finomhangoláshoz.
Hogyan válasszam ki a megfelelő diagramtípust?
A választás az adattípustól és a kérdéstől függ. Folytonos változók eloszlásához használj hisztogramot vagy KDE diagramot. Kategorikus összehasonlításhoz boxplotot vagy violin plotot. Két változó közötti kapcsolathoz szórásdiagramot. Korrelációk áttekintéséhez hőtérképet. Ha nem vagy biztos benne, a Seaborn pairplot funkciója mindig jó kiindulópont.
Hogyan menthetek el Seaborn diagramot nagy felbontásban?
Használd a fig.savefig("fajlnev.png", dpi=300, bbox_inches="tight") parancsot. Vektoros formátumhoz (pl. tudományos publikációkhoz) SVG vagy PDF az ajánlott: fig.savefig("fajlnev.svg", bbox_inches="tight"). És ne feledd: mindig a plt.show() előtt mentsd el!
Használható a Seaborn Polars DataFrame-mel is?
A Seaborn 0.13.x verziója kísérleti támogatást nyújt Polars és más alternatív DataFrame könyvtárakhoz. Ez azt jelenti, hogy bizonyos Seaborn függvények elfogadnak Polars DataFrame-et, de a teljes kompatibilitás még nem garantált. Éles projektben egyelőre érdemes a Polars adatkeretet Pandasra konvertálni a .to_pandas() metódussal – tudom, nem ideális, de egyelőre ez a legbiztosabb megoldás.
Melyik Seaborn stílust érdemes használni prezentációhoz?
Prezentációkhoz a "whitegrid" stílust ajánlom – letisztult, professzionális megjelenést ad. Tudományos publikációkhoz a "ticks" stílus illik jobban. A "darkgrid" pedig leginkább interaktív, képernyőn történő munkához ideális. A stílust a sns.set_theme(style="whitegrid") paranccsal állíthatod be az ábrák rajzolása előtt.