Ga naar hoofdinhoud

Python-boxplots: een complete gids voor beginners

Maak prachtige boxplots in Python! Deze complete tutorial voor beginners behandelt Matplotlib en Seaborn en helpt je dataverdelingen te visualiseren en vergelijken.
Bijgewerkt 2 okt 2026  · 15 min lezen

Verken met AI

ChatGPTClaudePerplexity

Heb je je ooit afgevraagd hoe je verdelingen van numerieke data in Python beter kunt weergeven? Dan is je beste keuze om te leren werken met boxplots! Boxplots zijn een geweldige manier om verdelingen tussen meerdere groepen te vergelijken.

In deze tutorial behandelen we wat boxplots zijn, de verschillende manieren om ze in Python te maken en een aantal veelvoorkomende beginnersfouten.

Wat zijn Python-boxplots?

Boxplots, ook wel box-and-whiskerplots genoemd, zijn een standaard manier om data weer te geven op basis van een vijfpunten­samenvatting: minimum, eerste kwartiel (Q1), mediaan, derde kwartiel (Q3) en maximum.

Boxplots zijn vooral handig om outliers te identificeren en om inzicht te krijgen in de spreiding en scheefheid van de data. Ze worden ook gebruikt bij het vergelijken van meerdere groepen of bij het visualiseren van de verdeling van één variabele.

Onderdelen van een boxplot

Een typische boxplot bestaat uit verschillende onderdelen als onderdeel van de “anatomie”:

  1. Mediaan: Dit is de middelste waarde van de data, weergegeven door een lijn in de box.
  2. Boxen: Deze stellen de interkwartielafstand (IQR) van de data voor, het bereik tussen Q1 en Q3. De onderste en bovenste randen stellen respectievelijk Q1 en Q3 voor.
  3. Snorharen (whiskers): Dit zijn verticale lijnen die vanaf beide uiteinden van de box doorlopen en het minimum en maximum weergeven, exclusief eventuele outliers.
  4. Outliers: Dit zijn punten buiten de snorharen die als ongebruikelijk of extreem worden beschouwd ten opzichte van de rest van de data.
  5. Kappen (caps): Dit zijn horizontale lijntjes aan de uiteinden van de snorharen, die het minimum en maximum voorstellen, inclusief eventuele outliers.

Deze onderdelen samen geven de boxplot statistische betekenis en maken het gemakkelijk om visueel te vergelijken tussen verschillende datagroepen.

Python is een geavanceerde tool die ons kan helpen boxplots te maken. In de volgende secties bespreken we verschillende methoden om dat te doen.

Python-boxplots: stapsgewijze gids

Nu we de basis van boxplots kennen, kijken we hoe je ze maakt met Python. Meerdere Python-bibliotheken, zoals Matplotlib, Seaborn en Plotly, ondersteunen het maken van boxplots.

Om boxplots in Python te maken, moet je eerst de benodigde bibliotheken installeren. De belangrijkste bibliotheken zijn Matplotlib, Seaborn en Plotly.

Hier is de code om ze te installeren:

pip install matplotlib
pip install seaborn
pip install plotly==5.22.0

Na installatie is de volgende stap om deze bibliotheken in je Python-omgeving te importeren.

Zorg er ook voor dat je de datasets laadt die je voor je boxplots gaat gebruiken, indien van toepassing.

#imports Matplotlib library and assigns shorthand 'plt'
import matplotlib.pyplot as plt
#imports Seaborn library and assigns shorthand 'sns'
import seaborn as sns
#imports Plotly library and assigns shorthand 'px'
import plotly.express as px

Dankzij de veelzijdigheid van Python heb je maar weinig code nodig om een eenvoudige boxplot te maken. Laten we beginnen met de meest gebruikte bibliotheek, Matplotlib.

Om een boxplot te maken met Matplotlib, importeer je de benodigde bibliotheken:

import matplotlib.pyplot as plt
import numpy as np

Vervolgens bereiden we een eenvoudige dataset voor:

# Generates some random dataset
np.random.seed(10) 
data = np.random.normal(0, 1, 100)

Tot slot maken we de daadwerkelijke boxplot en tonen we deze:

# Creates a boxplot
plt.boxplot(data) plt.title('Basic Boxplot') plt.show()

Hier zijn de resultaten:Eenvoudige Matplotlib-plot

Als je aparte boxplots in verschillende subplotten wilt maken, kun je de functie subplot gebruiken. Hiermee kun je meerdere boxplots naast elkaar in één afbeelding maken. 

Hier is het volledige codevoorbeeld:

import matplotlib.pyplot as plt
import numpy as np
# Generates multiple datasets
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Creates subplots
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
# Plots Boxplot for Data 1
axs[0].boxplot(data1)
axs[0].set_title('Data 1')
axs[0].set_xlabel('Sample')
axs[0].set_ylabel('Value')
# Plots Boxplot for Data 2
axs[1].boxplot(data2)
axs[1].set_title('Data 2')
axs[1].set_xlabel('Sample')
axs[1].set_ylabel('Value')
# Plots Boxplot for Data 3
axs[2].boxplot(data3)
axs[2].set_title('Data 3')
axs[2].set_xlabel('Sample')
axs[2].set_ylabel('Value')
# Adjusts layout
plt.tight_layout()
plt.show()

Dit is de resulterende plot:

Meerdere boxplots in Matplotlib

Deze subplotten delen echter niet dezelfde as en zijn niet geschikt voor vergelijking naast elkaar tussen categorieën. Voor meerdere boxplots met dezelfde as moet je gegroepeerde boxplots maken.

Gegroepeerde boxplots zijn vooral handig om verdelingen over meerdere categorieën te vergelijken. Ze geven een verfijnder beeld van de data. Zulke vergelijkingen kunnen verschillen blootleggen die in andere grafieken niet meteen opvallen.

Elke groep wordt naast elkaar in dezelfde grafiek weergegeven, waardoor variaties, trends en outliers binnen verschillende subcategorieën makkelijker te zien zijn.

Zo maak je een gegroepeerde subplot:

# Generates grouped data
data_group1 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
data_group2 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
# Combines two data groups into a dataset
data = data_group1 + data_group2
# Creates grouped boxplots
plt.boxplot(data, positions=[1, 2, 3, 5, 6, 7], labels=['G1-D1', 'G1-D2', 'G1-D3', 'G2-D1', 'G2-D2', 'G2-D3'])
plt.title('Grouped Boxplots')
plt.xlabel('Group-Dataset')
plt.ylabel('Value')
plt.show()

Dit is de gegroepeerde boxplot die door de bovenstaande code wordt geproduceerd:

Gegroepeerde boxplots in Matplotlib

Je kunt geavanceerde aanpassingen in Matplotlib gebruiken om je datavisualisaties te verbeteren.

Technieken zoals gemiddelden toevoegen, standaarddeviaties toevoegen, gegroepeerde boxplots maken en horizontale boxplots gebruiken kunnen meer inzicht geven in de verdeling van je data.

Boxplots in Python aanpassen stelt je ook in staat om visuals af te stemmen op de specificaties van je project.

Hier zijn enkele manieren om boxplots aan te passen met de Matplotlib-bibliotheek:

1. Labels en titels toevoegen

Titels en labels maken je plots begrijpelijker voor kijkers, die zo sneller de datavergelijking zien. Deze toevoegen is eenvoudig en kan met de functies van Matplotlib.

Zo voeg je labels toe aan een Matplotlib-boxplot:

plt.boxplot(data)
# Adds title
plt.title('Customized Boxplot Title')
# Adds x axis label
plt.xlabel('Customized X Label')
# Adds y axis label
plt.ylabel('Customized Y Label')
plt.show()

Dit levert een gelabelde boxplot op zoals in de afbeelding hieronder:

Aangepaste boxplottitel en labels in Matplotlib

2. Boxplotkleuren aanpassen

Het aanpassen van de kleuren en stijlen van boxplots in Python zorgt voor een duidelijke en aantrekkelijke presentatie van data. Het helpt je ook om specifieke datapunten of vergelijkingen voor je stakeholders te benadrukken.

Je kunt de kleuren van de boxen, snorharen, kappen, medianen en uitschieters veranderen met de parameters boxprops, whiskerprops, capprops, medianprops en flierprops.

Hier is het codevoorbeeld:

plt.boxplot(data, boxprops=dict(color='blue'), whiskerprops=dict(color='red'), capprops=dict(color='green'), medianprops=dict(color='orange'), flierprops=dict(markerfacecolor='red', marker='o'))
plt.show()

Dit zorgt voor verschillende kleuren voor je boxplotelementen op basis van de ingestelde parameters:

Boxplot kleuren aanpassen in Matplotlib

3. Gemiddelde en standaarddeviatie toevoegen

Voeg het gemiddelde en de standaarddeviatie toe aan de boxplot om meer statistische informatie te bieden.

# Creates dataset
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Calculates the mean and standard deviations
mean = [np.mean(d) for d in data]
std_devs = [np.std(d) for d in data]
# Creates a boxplot
plt.boxplot(data, labels=['Data 1', 'Data 2', 'Data 3'])
# Adds mean as red dots
for i in range(len(mean)):
   plt.plot(i + 1, mean[i], 'ro')
# Adds standard deviations as error bars
for i in range(len(std_devs)):
   plt.errorbar(i + 1, mean[i], yerr=std_devs[i], fmt='o', color='red')
# Plots graph
plt.title('Boxplot with Means and Standard Deviations')
plt.xlabel('Dataset')
plt.ylabel('Value')
plt.show()

Hier is de resulterende plot:

Boxplot met gemiddelde en SD in Matplotlib

4. Horizontale boxplots

Horizontale boxplots kunnen de leesbaarheid vergroten, vooral bij lange categorienamen.

Dit kan eenvoudig met de parameter vert van de functie boxplot in Matplotlib.

# Creates horizontal boxplot
plt.boxplot(data,
            labels=['Data 1', 'Data 2', 'Data 3'], 
            vert=False)
# Plots graph
plt.title('Horizontal Boxplot')
plt.xlabel('Value')
plt.ylabel('Dataset')
plt.show()

Dit is de plot die ontstaat door bovenstaande code uit te voeren:

Horizontale boxplot in Matplotlib

Onze cursus Introduction to Data Visualization with Matplotlib helpt je ook om data­visualisaties te maken die verder gaan dan boxplots.

Als je deze informatie later nog eens wilt raadplegen, is hier een cheat sheet-samenvatting voor plotten in Matplotlib:

Matplotlib-cheatsheet

Seaborn, gebouwd bovenop Matplotlib, maakt het eenvoudig om met minimale code esthetisch aantrekkelijke boxplots te maken. De eenvoudige syntaxis is toegankelijk voor alle niveaus, en de integratie met andere bibliotheken geeft maximale flexibiliteit voor data-analyse.

Hier is een stapsgewijze gids om een basisboxplot met Seaborn te maken. Begin, zoals eerder, met het importeren van de benodigde bibliotheken.

# Imports necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

Vervolgens bereiden we een eenvoudige dataset voor:

# Generates a random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)

Tot slot maken we de daadwerkelijke boxplot en tonen we deze:

# Creates a basic boxplot
sns.boxplot(data=data)
# Adds title to the boxplot
plt.title('Basic Boxplot') 
plt.show()

Dit is de resulterende plot:

Basis Seaborn-boxplot

Je kunt je Seaborn-plot aanpassen met de parameters hue, orient en palette. 

Laten we zien hoe je kleuren aan je boxplot toevoegt op basis van categorieën, gebruik hiervoor de parameter hue:

# Generate multiple datasets
data = {
    'Group': ['A']*100 + ['B']*100 + ['C']*100,
    'Value': np.concatenate([np.random.normal(0, 1, 100), 
                             np.random.normal(1, 2, 100), 
                             np.random.normal(2, 1.5, 100)])
}
df = pd.DataFrame(data)
# Create additional grouping data
df['Subgroup'] = np.random.choice(['X', 'Y'], size=300)
# Plots graph
sns.boxplot(x='Group', y='Value', data=df, hue='Subgroup', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Hier is de aangepaste boxplot:

Ingekleurde Seaborn-boxplot

Om je boxplot in een specifieke oriëntatie uit te lijnen, gebruik je de parameter orient. Voor verticale oriëntatie stel je orient in op 'v'. Voor horizontale oriëntatie stel je deze in op 'h'.

Hier is de code voor een horizontale boxplot:

# Plots horizontal boxplot
sns.boxplot(data=df, orient='h', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

De bovenstaande code maakt een boxplot zoals deze:

Horizontale Seaborn-boxplot

Om individuele datapunten aan de boxplot toe te voegen, kun je een swarm plot gebruiken met de functie swarmplot:

# Plots boxplot
sns.boxplot(x='Group', y='Value', data=df)
# Overlays swarm plot over boxplot
sns.swarmplot(x='Group', y='Value', data=df, color='black', alpha=0.5)
plt.title('Boxplot with Swarmplot')
plt.show()

De bovenstaande code maakt een boxplot zoals deze:

Boxplot met swarmplot

Een swarm plot zoals deze kan helpen meer inzicht te geven in de verdeling van je data. Het vult de statistische informatie van een boxplot aan om je kijkers een compleet beeld van je data te geven.

Bekijk onze cursus Introduction to Data Visualization with Seaborn voor meer manieren om datavisualisaties in Seaborn te implementeren.

Als je deze informatie later wilt raadplegen, is hier een cheat sheet voor plotten in Seaborn:

Seaborn-cheatsheet

Resultaten van Python-boxplots interpreteren

De interpretatie van een boxplot hangt af van de context en de specifieke onderzoeksvraag.

Er zijn echter enkele algemene richtlijnen die helpen om de dataverdeling in een boxplot te begrijpen. Deze omvatten:

  • De mediaanlijn geeft de middelste waarde van de dataset aan.
  • De interkwartielafstand (IQR) of middelste 50% van de waarden ligt tussen het eerste kwartiel (Q1) en het derde kwartiel (Q3).
  • De snorharen lopen respectievelijk 1,5 keer boven Q3 en onder Q1 door.
  • Outliers worden afzonderlijk weergegeven met een punt of asterisk.
  • De lengte van de box en snorharen geeft een idee van hoe verspreid de data is.
  • Scheve verdelingen tonen asymmetrie in de grootte en positie van de box ten opzichte van de mediaanlijn.
  • Outliers die verder dan 1,5 keer boven of onder Q3 en Q1 liggen, kunnen duiden op extreme waarden of mogelijke meetfouten.

Veelgemaakte fouten om te vermijden bij het maken van Python-boxplots

Hoewel Python het eenvoudig maakt om aantrekkelijke boxplots te maken op basis van je datasets, zijn er enkele aspecten om in gedachten te houden om misleidende of onjuiste visualisaties te voorkomen.

1. Missende waarden niet afhandelen

Bij het maken van een Python-boxplot wordt het belang van datapreprocessing vaak over het hoofd gezien, wat tot misleidende resultaten kan leiden. 

Alle datavisualisaties vereisen enige vorm van opschoning vóór het plotten. Boxplots vormen hierop geen uitzondering en kunnen missende waarden als outliers weergeven, wat de resultaten kan vertekenen.

2. Onjuiste schaling van data

Daarnaast vergeten gebruikers soms de data op de juiste manier te schalen, wat kan resulteren in een scheve boxplot die de werkelijke kenmerken van de dataset verkeerd weergeeft. Schalen zorgt ervoor dat features gelijk bijdragen aan de analyse.

3. Outliers niet aanpakken

Tot slot kunnen analisten nalaten om outliers grondig te onderzoeken en aan te pakken vóór het plotten. Onjuiste omgang met outliers kan de interpretatie vertekenen; het is cruciaal om echte uitschieters te onderscheiden van fouten of anomalieën in de dataverzameling.

Gebruik deze cheat sheet bij het bouwen van datavisualisaties:

Cheat sheet datavisualisatie

Tot slot

Boxplots zijn een waardevol hulpmiddel om dataverdelingen te visualiseren en ze tussen categorieën te vergelijken. 

In Python kun je Matplotlib, Seaborn of Plotly gebruiken om snel boxplots te maken zonder veel code. DataCamp heeft uitgebreide cursussen voor elk van deze tools:

Wil je meer ontdekken over datavisualisatie met Python? Dan is de Data Visualization with Python skill track erg behulpzaam!

FAQs

Kunnen boxplots worden gebruikt voor niet-numerieke data?

Nee, boxplots zijn expliciet bedoeld voor numerieke data. Ze geven de verdeling van een dataset weer op basis van een vijfpunts­samenvatting (minimum, eerste kwartiel, mediaan, derde kwartiel en maximum), wat numerieke waarden vereist. Voor niet-numerieke data zijn andere visualisaties zoals staafdiagrammen of cirkeldiagrammen geschikter.

Hoe kan ik de aanwezigheid van meerdere outliers in een boxplot interpreteren?

Meerdere outliers in een boxplot duiden op verschillende datapunten die significant afwijken van de rest van de dataset. Dit kan wijzen op variabiliteit of ongewone observaties die nader onderzoek vereisen. Outliers kunnen het gevolg zijn van fouten in dataverzameling, natuurlijke variatie of betekenisvolle verschillen in subgroepen binnen de data.

Kan ik boxplots gebruiken om dataverdelingen over meerdere categorieën te vergelijken?

Ja, boxplots zijn uitstekend geschikt om verdelingen over verschillende categorieën te vergelijken. Je kunt boxplots naast elkaar plaatsen voor verschillende categorieën om medianen, interkwartielafstanden en de aanwezigheid van outliers te vergelijken. Dit helpt om verschillen en overeenkomsten in de verdelingen van diverse groepen te identificeren.

Wat zijn veelvoorkomende valkuilen bij het interpreteren van boxplots?

Vermijd bij het interpreteren van boxplots de volgende valkuilen:

  • De context van outliers negeren: outliers duiden niet altijd op fouten maar kunnen betekenisvolle variaties zijn.
  • De mediaan verwarren met het gemiddelde: de mediaan is de middelste waarde, niet het gemiddelde, en is minder gevoelig voor outliers.
  • Het belang van steekproefgrootte over het hoofd zien: kleine steekproeven kunnen misleidende boxplots opleveren. Zorg dat je datavolume voldoende is voor een betrouwbare interpretatie.

Hoe maak ik interactieve boxplots in Python?

Om interactieve boxplots in Python te maken, kun je bibliotheken zoals Plotly of Bokeh gebruiken. Met deze bibliotheken voeg je interactiviteit toe aan je visualisaties, zoals tooltips, zoomen en pannen.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Ik ben Austin, een blogger en techschrijver met jarenlange ervaring als zowel datascientist als data-analist in de gezondheidszorg. Ik begon mijn techreis met een achtergrond in biologie en help nu anderen dezelfde overstap te maken via mijn techblog. Mijn passie voor technologie heeft geleid tot schrijfbijdragen aan tientallen SaaS-bedrijven, waarmee ik anderen inspireer en mijn ervaringen deel.

Onderwerpen
Datavisualisatie
Python

Leer meer over Python en datavisualisatie met deze cursussen!

Cursus

Introductie tot datavisualisatie met Matplotlib

4 uur
235.9K
Leer hoe je datavisualisaties kunt maken, aanpassen en delen met Matplotlib.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken