Staafdiagrammen en histogrammen
Visualiseer categorische aantallen met ax.bar() en gegevensverdelingen met ax.hist() en pas het aantal bins en de randkleur aan.
Staafdiagrammen en histogrammen 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.
Staafgrafieken en histogrammen
Staafgrafieken geven categorische gegevens weer: één staaf per categorie, waarbij de hoogte van de staaf evenredig is aan een waarde. Ze beantwoorden de vraag: 'hoeveel heeft elke categorie?'. Histogrammen geven de verdeling van een continue numerieke variabele weer: de gegevens worden ingedeeld in intervallen en de hoogte van de staaf toont het aantal of de frequentie in elk interval. Ze beantwoorden de vraag: 'hoe zijn deze waarden verdeeld?'. Hiervoor gebruik je respectievelijk ax.bar() en ax.hist().
ax.bar() voor verticale staafgrafieken
ax.bar(x, height) tekent een verticale staafgrafiek waarin x een reeks categor posities (of labels) is en height de waarde van de staaf bepaalt. Belangrijke parameters zijn: width (standaard 0.8, bepaalt de staafbreedte ten opzichte van de tussenruimte), color, edgecolor en align ('center' of 'edge'). De functie retourneert een lijst met Rectangle-Artist-objecten.
import matplotlib.pyplot as plt
import numpy as np
categories = ['East', 'West', 'North', 'South']
values = [420, 380, 310, 290]
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)
ax.set_title('Regional Revenue')
ax.set_xlabel('Region')
ax.set_ylabel('Revenue (USD)')
# plt.show()
plt.close()Het uiterlijk van staven aanpassen
Enkele aanpassingen maken staafgrafieken aanzienlijk leesbaarder: gebruik één accentkleur voor alle staven (of een array met kleuren om staven van elkaar te onderscheiden), voeg waardelabels boven elke staaf toe met ax.bar_label(), stel de staafbreedte zo in dat er voldoende ruimte overblijft en gebruik ax.set_ylim(0, max * 1.15) om ruimte voor labels boven de hoogste staaf te maken.
fig, ax = plt.subplots(figsize=(7, 4))
bars = ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)
# Add value labels above bars
ax.bar_label(bars, fmt='%d', padding=3, fontsize=10)
# Give space above bars for labels
ax.set_ylim(0, max(values) * 1.15)
ax.set_title('Regional Revenue')
plt.tight_layout()
plt.close()Horizontale staafgrafieken met ax.barh()
Gebruik ax.barh(y, width) voor horizontale staafgrafieken. Horizontale staven hebben de voorkeur wanneer categorielabels lang zijn (ze lezen natuurlijk van links naar rechts) of wanneer er veel categorieën zijn (ze kunnen compacter onder elkaar worden geplaatst). Alle dezelfde aanpassingsparameters zijn van toepassing: height bepaalt de dikte van de staaf en ax.barh_label() (of ax.bar_label()) voegt tekstlabels toe.
import pandas as pd
df = pd.DataFrame({'region': categories, 'revenue': values})
df_sorted = df.sort_values('revenue')
fig, ax = plt.subplots(figsize=(7, 4))
ax.barh(df_sorted['region'], df_sorted['revenue'],
color='steelblue', edgecolor='white', height=0.5)
ax.set_title('Revenue by Region (Sorted)')
ax.set_xlabel('Revenue (USD)')
plt.tight_layout()
plt.close()Gegroepeerde staafgrafieken
Als je meerdere groepen naast elkaar wilt vergelijken, maak je een gegroepeerde staafgrafiek door de staafposities handmatig te verschuiven. Bereken de middelpunten voor elke groep en trek vervolgens voor elke subgroep een vaste verschuiving af of tel die erbij op. De totale staafbreedte plus de ruimte tussen groepen moet gelijk zijn aan 1.0, zodat de staven elkaar niet overlappen. Met ax.set_xticks() centreer je de maatstreeplabels tussen de gegroepeerde staven.
products = ['A', 'B', 'C']
q1 = [80, 120, 95]
q2 = [90, 110, 105]
x = np.arange(len(products))
width = 0.35
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(x - width/2, q1, width, label='Q1', color='steelblue')
ax.bar(x + width/2, q2, width, label='Q2', color='coral')
ax.set_xticks(x)
ax.set_xticklabels(products)
ax.legend()
ax.set_title('Q1 vs Q2 Sales by Product')
plt.close()Gestapelde staafgrafieken
Gestapelde staven tonen de samenstelling van een totaal over meerdere subgroepen. De staven van de tweede groep beginnen waar de staven van de eerste groep eindigen, met de parameter bottom. De waarde van bottom voor elke volgende laag is de cumulatieve som van alle vorige lagen. Gestapelde staven zijn handig om zowel het totaal als de bijdrage van elk onderdeel tegelijk te tonen.
q1_arr = np.array(q1)
q2_arr = np.array(q2)
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(products, q1_arr, label='Q1', color='steelblue')
ax.bar(products, q2_arr, bottom=q1_arr, label='Q2', color='coral')
ax.legend()
ax.set_title('Stacked Q1 + Q2 Sales by Product')
ax.set_ylabel('Total Sales')
plt.close()ax.hist() voor histogrammen
ax.hist(data, bins) maakt een histogram. De parameter bins bepaalt in hoeveel intervallen met gelijke afstand de gegevens worden verdeeld (standaard 10). Je kunt ook een lijst met randen van intervallen doorgeven voor ongelijke intervallen. Belangrijke parameters zijn: density=True normaliseert het histogram naar een kansdichtheid, edgecolor voegt randen tussen staven toe en color en alpha bepalen het uiterlijk.
np.random.seed(42)
data = np.random.randn(500) # 500 samples from standard normal
fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(data, bins=30, color='steelblue', edgecolor='white', alpha=0.7)
ax.set_title('Distribution of Values')
ax.set_xlabel('Value')
ax.set_ylabel('Count')
plt.close()Het aantal intervallen kiezen
Het aantal klassen heeft grote invloed op het uiterlijk van een histogram. Te weinig klassen verbergen structuur; te veel klassen veroorzaken ruisachtige pieken. Veelgebruikte vuistregels zijn de regel van Sturges (≈ log2(n) + 1), de regel van Scott en de regel van Freedman-Diaconis. Matplotlib ondersteunt deze als tekenreeksen: bins='auto', bins='scott', bins='fd'. Probeer voor verkennende analyses handmatig enkele waarden uit; kies voor presentaties het aantal klassen dat de vorm het duidelijkst overbrengt.
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, b in zip(axes, [5, 30, 'auto']):
ax.hist(data, bins=b, edgecolor='white', color='steelblue', alpha=0.7)
ax.set_title(f'bins={b}')
ax.set_xlabel('Value')
plt.tight_layout()
plt.close()Overlappende histogrammen ter vergelijking
Als je twee verdelingen op dezelfde assen wilt vergelijken, roep je ax.hist() twee keer aan met verschillende gegevens en kleuren. Gebruik voor beide alpha=0.5, zodat de overlap zichtbaar is. Voeg labels toe en roep ax.legend() aan. Met density=True normaliseer je beide histogrammen naar dezelfde schaal wanneer de steekproefgroottes verschillen, waardoor je de vormen rechtstreeks kunt vergelijken.
group_a = np.random.randn(300)
group_b = np.random.randn(300) + 1.5 # shifted right
fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(group_a, bins=25, alpha=0.5, color='steelblue', label='Group A', density=True)
ax.hist(group_b, bins=25, alpha=0.5, color='coral', label='Group B', density=True)
ax.legend()
ax.set_title('Distribution Comparison')
plt.close()Pandas Series en DataFrames tekenen
Zowel .plot.bar() als .plot.hist() zijn beschikbaar als DataFrame-/Series-methoden en genereren automatisch Matplotlib-figuren. Ze accepteren een ax-parameter om op een bestaande Axes te tekenen. Dit is de snelste manier om staafdiagrammen van gegroepeerde Pandas-gegevens te maken: bereken de aggregatie met groupby, roep .plot.bar() aan op het resultaat en pas vervolgens de geretourneerde Axes aan.
import pandas as pd
import numpy as np
df_sales = pd.DataFrame({
'region': ['East', 'West', 'North', 'South'],
'revenue': [420, 380, 310, 290]
}).set_index('region')
fig, ax = plt.subplots(figsize=(7, 4))
df_sales['revenue'].plot.bar(ax=ax, color='steelblue', rot=0)
ax.set_title('Revenue by Region')
plt.tight_layout()
plt.close()Staafdiagram of histogram kiezen
De keuze tussen een staafdiagram en een histogram hangt af van het type gegevens. Gebruik een staafdiagram wanneer je x-as afzonderlijke, ongeordende categorieën weergeeft (productnamen, regio's, gebruikerssegmenten) en de staven geaggregeerde waarden voor elke categorie voorstellen. Gebruik een histogram wanneer je x-as een continue numerieke variabele is en je wilt laten zien hoe waarden over een bereik zijn verdeeld. Deze twee door elkaar halen is een veelgemaakte visualisatiefout die lezers op het verkeerde been zet over het gegevenstype.
# Bar chart: categorical x-axis (product names)
products = ['Widget', 'Gadget', 'Doohickey']
revenue = [500, 300, 200]
fig, ax = plt.subplots(figsize=(5, 3))
ax.bar(products, revenue, color='steelblue')
ax.set_title('Revenue per Product (Bar Chart)')
plt.close()
# Histogram: continuous x-axis (order sizes)
order_sizes = np.random.exponential(scale=50, size=300)
fig, ax = plt.subplots(figsize=(5, 3))
ax.hist(order_sizes, bins=20, color='coral', edgecolor='white')
ax.set_title('Distribution of Order Sizes (Histogram)')
plt.close()Korte controle
Toets je begrip van staafdiagrammen en histogrammen uit deze les.
Samenvatting van de les
In deze les heb je geleerd dat ax.bar() verticale staafdiagrammen maakt en ax.barh() horizontale staafdiagrammen; met bottom maak je gestapelde staven; ax.hist() maakt histogrammen waarvan het aantal klassen wordt bepaald door bins; en density=True histogrammen normaliseert voor een eerlijke vergelijking. Hierna voegen we aslabels en titels toe en slaan we figuren op die geschikt zijn voor publicatie.
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 “Staafdiagrammen en histogrammen” gratis?
Ja — de volledige tekst van “Staafdiagrammen en histogrammen” 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 “Staafdiagrammen en histogrammen”?
Visualiseer categorische aantallen met ax.bar() en gegevensverdelingen met ax.hist() en pas het aantal bins en de randkleur aan. 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 “Staafdiagrammen en histogrammen”?
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
- Architectuur van Figure en Axes
- Lijn- en spreidingsgrafieken
- Staafdiagrammen en histogrammen
- Labels, titels en figuren opslaan