Pandas & NumPy Academy · Les

Spreidingsgrafieken en pairplots

Maak spreidingsgrafieken die met een derde variabele zijn ingekleurd met sns.scatterplot en visualiseer alle paarsgewijze relaties met sns.pairplot.

Les 3 van 413 stappen

Spreidingsgrafieken en pairplots is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Relaties tussen variabelen zichtbaar maken

Verdelingsgrafieken tonen één variabele tegelijk. Wanneer je de relatie tussen twee numerieke variabelen wilt begrijpen, heb je spreidingsdiagrammen en verwante visualisaties nodig. Hiermee kun je correlatie herkennen (nemen beide variabelen samen toe?), clusters vinden (zijn er subgroepen in de gegevens?) en uitschieters opsporen (zijn er ongebruikelijke punten die ver van de hoofdgroep liggen?). Seaborn maakt dit allemaal eenvoudig met scatterplot en pairplot.

import seaborn as sns
import matplotlib.pyplot as plt

# Load the classic iris dataset
iris = sns.load_dataset('iris')
print(iris.head())
print('\nShape:', iris.shape)

Basis-spreidingsdiagram met sns.scatterplot

sns.scatterplot(data, x, y) tekent elke waarneming als een punt op de bijbehorende (x, y)-coördinaten. In tegenstelling tot Matplotlibs plt.scatter is de versie van Seaborn automatisch gekoppeld aan een DataFrame en geïntegreerd met de semantiek van hue, size en style. Het resultaat is een informatieve grafiek met meerdere variabelen, gemaakt met één functieaanroep en een automatische legenda.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

sns.scatterplot(data=tips, x='total_bill', y='tip')
plt.title('Tip vs Total Bill')
plt.xlabel('Total Bill ($)')
plt.ylabel('Tip ($)')
plt.show()

Een derde variabele coderen met hue

De parameter hue wijst elk punt een kleur toe op basis van een derde variabele — categorisch of numeriek. Wanneer hue een categorische kolom is, zoals 'smoker', gebruikt Seaborn verschillende kleuren. Wanneer hue een numerieke kolom is, gebruikt het een opeenvolgende kleurkaart. Zo kun je drie variabelen tegelijk zien in een 2D-grafiek zonder een derde as toe te voegen.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

sns.scatterplot(
    data=tips,
    x='total_bill',
    y='tip',
    hue='time',       # Lunch vs Dinner
    style='smoker',   # marker shape
    palette='deep'
)
plt.title('Tip vs Bill by Time and Smoker Status')
plt.legend(bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()

Grootte en stijl coderen

Naast hue ondersteunen spreidingsdiagrammen van Seaborn ook size (het oppervlak van het punt codeert een numerieke variabele) en style (de vorm van de markering codeert een categorische variabele). Het gelijktijdig gebruiken van alle drie de semantieken kan complexe patronen met meerdere variabelen onthullen, maar kan de kijker ook overbelasten. Een praktische richtlijn is om eerst hue te gebruiken (het meest opvallend), daarna style en size alleen wanneer dat nodig is.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

sns.scatterplot(
    data=tips,
    x='total_bill',
    y='tip',
    hue='day',
    size='size',      # party size controls marker area
    sizes=(20, 200),  # min and max dot area
    alpha=0.7
)
plt.title('Tip vs Bill — Colour=Day, Size=Party Size')
plt.legend(bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()

Een regressielijn toevoegen met regplot

sns.regplot() tekent een spreidingsdiagram en legt daar een lineaire regressielijn met een gearceerde betrouwbaarheidsband van 95% overheen. Dit is nuttig om de sterkte en richting van de lineaire relatie tussen twee variabelen zichtbaar te maken. De betrouwbaarheidsband is smaller in gebieden met veel gegevens en breder aan de randen, waar minder punten informatie leveren voor de aanpassing.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

sns.regplot(
    data=tips,
    x='total_bill',
    y='tip',
    scatter_kws={'alpha': 0.4},
    line_kws={'color': 'red'}
)
plt.title('Tip vs Bill with Regression Line')
plt.show()

lmplot: regressiegrafieken met facetten

sns.lmplot() is de versie op figuurniveau van regplot. De functie ondersteunt hue (afzonderlijke regressielijnen per groep in hetzelfde paneel) en col/row (afzonderlijke panelen). Dit is krachtig om te testen of de relatie tussen twee variabelen verschilt tussen subgroepen — bijvoorbeeld of de relatie tussen rekeningbedrag en fooi steiler is voor het diner dan voor de lunch.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Separate regression line per time (Lunch / Dinner)
sns.lmplot(
    data=tips,
    x='total_bill',
    y='tip',
    hue='time',
    scatter_kws={'alpha': 0.4},
    height=5
)
plt.suptitle('Regression by Meal Time', y=1.02)
plt.show()

Inleiding tot paardiagrammen

sns.pairplot(df) maakt een raster van spreidingsdiagrammen voor elk paar numerieke kolommen in het DataFrame, met verdelingsgrafieken op de diagonaal. Dit is de snelste manier om alle onderlinge relaties in een gegevensverzameling met één aanroep zichtbaar te maken. Voor een DataFrame met n numerieke kolommen maakt pairplot een raster van n×n. Dit is het meest praktisch wanneer n tussen 3 en 8 ligt — grotere rasters worden te klein om te lezen.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset('iris')

# Create pairplot coloured by species
sns.pairplot(iris, hue='species', diag_kind='kde', plot_kws={'alpha': 0.5})
plt.suptitle('Iris Dataset Pairplot', y=1.02)
plt.show()

De diagonaal van pairplot aanpassen

De parameter diag_kind bepaalt wat er op de diagonaal van het pairplot-raster verschijnt. Gebruik 'hist' voor histogrammen of 'kde' voor kernel-dichtheidsschattingen. De diagonaal toont de univariate verdeling van elke variabele, terwijl de panelen buiten de diagonaal paarsgewijze spreidingsdiagrammen tonen. Je kunt ook corner=True gebruiken om alleen de onderste driehoek te tonen. Zo halveer je het aantal panelen en verminder je redundantie.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset('iris')

# Show only lower triangle
sns.pairplot(
    iris,
    hue='species',
    diag_kind='hist',
    corner=True
)
plt.show()

PairGrid voor volledige aanpassing

sns.PairGrid geeft je volledige controle over welk grafiektype in elk deel van de matrix verschijnt. Gebruik g.map_upper(), g.map_lower() en g.map_diag() om verschillende functies toe te wijzen, zoals regplot in de bovenste driehoek en kdeplot in de onderste. Zo maak je grafieken van publicatiekwaliteit waarin elk paneel specifieke informatie over het variabelenpaar geeft.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset('iris')
numeric_iris = iris.drop(columns=['species'])

g = sns.PairGrid(numeric_iris)
g.map_upper(sns.scatterplot, alpha=0.3)
g.map_lower(sns.kdeplot, fill=True)
g.map_diag(sns.histplot, kde=True)

plt.suptitle('Custom PairGrid', y=1.02)
plt.show()

Correlatie herkennen in spreidingsdiagrammen

Wanneer je een spreidingsdiagram leest, schat je de richting (loopt de wolk omhoog of omlaag?), de sterkte (hoe dicht liggen de punten rond de trend?) en de vorm (lineair of gekromd?) van het verband in. De correlatiecoëfficiënt r loopt van -1 (perfect negatief) tot +1 (perfect positief), waarbij 0 betekent dat er geen lineair verband is. Onthoud: correlatie is geen causaliteit en een niet-lineair verband kan r ≈ 0 hebben.

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)
x = np.linspace(0, 10, 100)

fig, axes = plt.subplots(1, 3, figsize=(12, 4))

# Strong positive correlation
axes[0].scatter(x, x + np.random.normal(0, 0.5, 100))
axes[0].set_title('Strong Positive (r≈0.99)')

# Weak correlation
axes[1].scatter(x, np.random.normal(5, 3, 100))
axes[1].set_title('No Correlation (r≈0)')

# Non-linear (quadratic) — r can be low
axes[2].scatter(x, (x-5)**2 + np.random.normal(0, 1, 100))
axes[2].set_title('Non-linear (r low despite pattern)')

plt.tight_layout()
plt.show()

jointplot voor bivariate gegevens met marginale verdelingen

sns.jointplot() combineert een centraal bivariaat diagram met marginale univariate diagrammen aan de boven- en rechterrand. Geef kind='scatter', 'hex', 'kde' of 'reg' door. Het type hex is handig wanneer je duizenden overlappende punten hebt: de punten worden in zeshoeken ingedeeld en kleur geeft de dichtheid aan. Zo wordt het probleem van overlappende punten opgelost, waardoor spreidingsdiagrammen bij grote gegevensverzamelingen onleesbaar worden.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# KDE joint plot with marginal distributions
sns.jointplot(
    data=tips,
    x='total_bill',
    y='tip',
    kind='reg',
    marginal_kws={'bins': 20}
)
plt.suptitle('Joint Distribution of Bill and Tip', y=1.02)
plt.show()

Korte controle

Test je begrip van de spreidings- en paarplots van Seaborn uit deze les.

Samenvatting van de les

In deze les heb je geleerd dat sns.scatterplot maximaal vier variabelen weergeeft met x, y, hue, size en style, dat sns.regplot/lmplot een regressielijn over de gegevens legt om lineaire verbanden te kwantificeren en dat sns.pairplot een raster met alle paren maakt dat ideaal is voor verkennende analyse van gegevensverzamelingen met meerdere variabelen. Hierna verkennen we heatmaps voor het visualiseren van correlatiematrices.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Spreidingsgrafieken en pairplots” gratis?

Ja — de volledige tekst van “Spreidingsgrafieken en pairplots” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Wat leer ik in “Spreidingsgrafieken en pairplots”?

Maak spreidingsgrafieken die met een derde variabele zijn ingekleurd met sns.scatterplot en visualiseer alle paarsgewijze relaties met sns.pairplot. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?

Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Spreidingsgrafieken en pairplots”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?

Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Verdelingsgrafieken: histplot en kdeplot
  2. Categorische grafieken: boxplot, barplot, violinplot
  3. Spreidingsgrafieken en pairplots
  4. Heatmaps voor correlatiematrices
← Terug naar Pandas & NumPy Academy