Ga naar hoofdinhoud

Matplotlib-tutorial: lijn-, balk- en spreidingsdiagrammen in Python

Een praktische tutorial voor het bouwen en aanpassen van lijn-, staaf- en scatterplots in Matplotlib met Python en echte beursdata.
Bijgewerkt 2 jun 2026  · 12 min lezen

In deze tutorial laat ik zien hoe je lijnplots, staafplots en scatterplots maakt in Matplotlib met beursdata. De tutorial gaat uit van enige bekendheid met NumPy-arrays en pandas DataFrames. Ik leg uit wat elke aanroep van de bibliotheek doet wanneer die voorkomt, maar de hoofdfocus ligt hier op Matplotlib.

TL;DR

  • Matplotlib is Python's fundamentele plottingbibliotheek — installeer met pip install matplotlib en importeer als import matplotlib.pyplot as plt

  • Maak lijnplots met plt.plot(x, y), staafplots met plt.bar(x, height) en scatterplots met plt.scatter(x, y)

  • Roep altijd plt.show() aan om de plot te tonen, of plt.savefig('filename.png') om hem op te slaan

  • Pas aan met plt.title(), plt.xlabel(), plt.ylabel() en de parameter color

  • Gebruik colormaps (cmap) voor continue data en plt.legend() voor plots met meerdere reeksen

Wat is Matplotlib?

Matplotlib is de meest gebruikte datavisualisatiebibliotheek in Python, met meer dan 50 miljoen maandelijkse downloads in 2026. Het maakt statische, interactieve en geanimeerde plots zoals lijngrafieken, staafdiagrammen, scatterplots, histogrammen en meer. De meeste andere Python-visualisatiebibliotheken (Seaborn, pandas-plotting en zelfs delen van Plotly) zijn gebouwd boven op Matplotlib.

Matplotlib biedt zeer fijnmazige controle over elk visueel element, wat betekent dat je meer code schrijft, zelfs voor basisplots. Als snelle, verkennende grafieken je prioriteit zijn, biedt Seaborn hogere-orde defaults die er direct goed uitzien. Voor interactieve, webgebaseerde grafieken is Plotly Express een andere optie om te overwegen.

Aan het einde van deze tutorial weet je hoe je lijnplots, staafplots en scatterplots maakt zoals hieronder, plus de basis van maatwerk: kleuren kiezen, labels en titels toevoegen, aslimieten instellen en voltooide figuren naar bestand wegschrijven.

image14.png

Aan de slag met Matplotlib

Laten we zonder omwegen Matplotlib laden en snel de dataset bekijken die in deze tutorial wordt gebruikt.

Matplotlib laden

Voordat je plots maakt, moet je de bibliotheek importeren. De submodule pyplot biedt alle plotfuncties die in deze tutorial worden gebruikt.

De conventie is om pyplot te aliassen als plt. Ik importeer hier ook pandas, NumPy en datetime, omdat latere secties die gebruiken.

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetime

De DJIA-indexdataset laden

Matplotlib is ontworpen om te werken met NumPy-arrays en pandas-dataframes. De bibliotheek maakt het eenvoudig om grafieken te bouwen vanuit tabeldata. Voor deze tutorial gebruiken we de historische prijzen van de Dow Jones Industrial Average (DJIA) van 2022-01-01 tot 2022-12-31 (hier te vinden). Je kunt het datumbereik op de pagina instellen en vervolgens op de knop “download a spreadsheet” klikken.

We laden het CSV-bestand, genaamd HistoricalPrices.csv, met de bibliotheek pandas en bekijken de eerste rijen met de methode .head().

import pandas as pd

djia_data = pd.read_csv('HistoricalPrices.csv')
djia_data.head()

image19.png

We zien dat de data 4 kolommen bevat: Date, Open, High, Low en Close. De laatste 4 hebben betrekking op de prijs van de index tijdens de handelsdag. Hieronder een korte uitleg van elke variabele.

  • Date: De dag waarop de koersinformatie betrekking heeft.
  • Open: De prijs van de DJIA om 9:30 AM ET wanneer de beurs opent.
  • High: De hoogste prijs die de DJIA gedurende de dag heeft bereikt.
  • Low: De laagste prijs die de DJIA gedurende de dag heeft bereikt.
  • Close: De prijs van de DJIA toen de handel om 4:00 PM ET stopte.

Als snelle opschoonstap gebruiken we ook de methode rename() in pandas, omdat de dataset die we hebben gedownload een extra spatie in de kolomnamen heeft.

djia_data = djia_data.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})

We zetten de kolom Date ook om naar een datetime-type en sorteren oplopend op datum. Voor meer over typeconversie, zie de tutorial Python Data Type Conversion.

djia_data['Date'] = pd.to_datetime(djia_data['Date'])
djia_data = djia_data.sort_values(by = 'Date')

Lijnplots tekenen met Matplotlib

Lijnplots laten zien hoe waarden veranderen over een continue dimensie, meestal over tijd. Ze zijn de standaardgrafiek voor tijdreeksdata, omdat de verbonden punten in één oogopslag trends, seizoenspatronen en afwijkingen laten zien.

Lijnplots met één lijn

We kunnen een lijnplot maken in matplotlib met de methode plt.plot(), waarbij het eerste argument de x-variabele is en het tweede argument de y-variabele in onze lijnplot. Wanneer we een plot maken, moeten we altijd plt.show() aanroepen om ervoor te zorgen dat we de gemaakte grafiek zien. We visualiseren de slotkoers van de DJIA in de tijd.

plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()

image1.png

We zien dat de indexkoers in de loop van het jaar begon op de hoogste waarde, gevolgd door schommelingen op en neer gedurende het jaar. Rond oktober zien we de laagste prijs, gevolgd door een sterke stijging richting het einde van het jaar.

Lijnplots met meerdere lijnen

We kunnen meerdere lijnen in dezelfde plot visualiseren door vóór de functie plt.show() nog een plt.plot()-aanroep toe te voegen.

plt.plot(djia_data['Date'], djia_data['Open'])
plt.plot(djia_data['Date'], djia_data['Close'])


plt.show()

image16.png

Gedurende het jaar lagen de openings- en slotkoersen van de DJIA per dag relatief dicht bij elkaar, zonder een duidelijk patroon dat de ene structureel boven of onder de andere lag.

Een legenda toevoegen

Als we willen aangeven welke lijn welke kolom voorstelt, kunnen we een legenda toevoegen. Dit creëert een kleurgecodeerd label in de hoek van de grafiek. We doen dit met plt.legend() en door label-parameters toe te voegen aan elke plt.plot()-aanroep.

plt.plot(djia_data['Date'], djia_data['Open'], label = 'Open')
plt.plot(djia_data['Date'], djia_data['Close'], label = 'Close')
plt.legend()
plt.show()

image2.png

We zien nu een legenda met de opgegeven labels op de standaardlocatie rechtsboven (de locatie kun je opgeven met het argument loc in plt.legend()).

Staafplots tekenen met Matplotlib

Staafplots zijn erg handig om numerieke waarden over categorieën te vergelijken. Ze helpen vooral bij het vinden van de grootste en kleinste categorieën.

Voor dit gedeelte aggregeren we de data naar maandgemiddelden met pandas .groupby() zodat we de maandelijkse prestaties van de DJIA kunnen vergelijken. Voor een diepere blik op groeperingsoperaties, zie de tutorial Pandas GroupBy.

# Importeer het calendar-pakket 
from calendar import month_name

# Orden de maanden chronologisch
djia_data['Month'] = pd.Categorical(djia_data['Date'].dt.month_name(), month_name[1:])

# Groepeer statistieken naar maandgemiddelden
djia_monthly_mean = djia_data \
    .groupby('Month') \
    .mean(numeric_only=True) \
    .reset_index()

djia_monthly_mean.head(6)

image5.png

Verticale staafplots

We beginnen met een staafdiagram met verticale balken. Dit kan met de methode plt.bar(), met als eerste argument de variabele voor de x-as (Month) en als parameter height de y-as (Close). Vervolgens roepen we plt.show() aan om onze plot te tonen.

plt.bar(djia_monthly_mean['Month'], height = djia_monthly_mean['Close'])
plt.show()

image9.png

We zien dat de meeste slotkoersen van de DJIA dicht bij elkaar lagen, met de laagste gemiddelde slotwaarde in juni en de hoogste in januari.

Balken herordenen in staafplots

Als we deze balken willen tonen in volgorde van hoog naar laag, op basis van de gemiddelde maandelijkse slotkoers, kunnen we de balken sorteren met de methode sort_values() in pandas en vervolgens dezelfde methode plt.bar() gebruiken.

djia_monthly_mean_srtd = djia_monthly_mean.sort_values(by = 'Close', ascending = False)

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image10.png

Zoals je ziet is het nu aanzienlijk makkelijker te zien welke maanden de hoogste gemiddelde DJIA-slotkoers hadden en welke de laagste. Ook het vergelijken en rangschikken van maanden wordt eenvoudiger.

Horizontale staafplots

Soms is het makkelijker om staafdiagrammen te interpreteren en labels te lezen wanneer we horizontale balken gebruiken. Dat kan met de methode plt.barh().

plt.barh(djia_monthly_mean_srtd['Month'], width = djia_monthly_mean_srtd['Close'])
plt.show()

image17.png
Zoals je ziet zijn de labels van elke categorie (maand) makkelijker te lezen dan bij verticale balken. We kunnen nog steeds eenvoudig groepen vergelijken. Dit horizontale staafdiagram is vooral handig wanneer er veel categorieën zijn.

Scatterplots tekenen met Matplotlib

Scatterplots tonen de relatie tussen twee numerieke variabelen. Elk punt staat voor één observatie, en het algemene patroon laat zien of er een lineaire, niet-lineaire of geen relatie is, wat direct je keuze van modelleertechniek beïnvloedt.

Een basis-scatterplot maken

Net als bij de andere plots kun je een scatterplot maken met pyplot.scatter(), waarbij het eerste argument de variabele voor de x-as is en het tweede argument de variabele voor de y-as. In dit voorbeeld bekijken we de relatie tussen de open- en slotkoersen van de DJIA.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image4.png

Op de x-as staat de openingskoers van de DJIA, en op de y-as de slotkoers. Zoals je zou verwachten, zien we dat naarmate de openingskoers stijgt, de slotkoers ook sterk toeneemt.

Een trendlijn toevoegen

Vervolgens voegen we een trendlijn toe aan de grafiek om de lineaire relatie tussen de open- en close-variabelen explicieter te laten zien. Hiervoor gebruiken we de numpy-methoden polyfit() en poly1d(). De eerste methode geeft een kleinste-kwadraten-polynoomfit waarbij het eerste argument de x-variabele is, het tweede de y-variabele en het derde de graad van de fit (1 voor lineair). De tweede methode geeft een eendimensionale polynoomklasse die we kunnen gebruiken om met plt.plot() een trendlijn te maken.

z = np.polyfit(djia_data['Open'], djia_data['Close'], 1)
p = np.poly1d(z)


plt.scatter(djia_data['Open'], djia_data['Close'])
plt.plot(djia_data['Open'], p(djia_data['Open']))
plt.show()

image20.png

Zoals we zien, volgt de lijn op de achtergrond van de grafiek het patroon van de scatterplot nauw, omdat de relatie tussen open en close sterk lineair is. We zien dat naarmate de openingskoers stijgt, de slotkoers doorgaans in vergelijkbaar en lineair tempo stijgt.

De plottitel en aslabels instellen

Plottitels en aslabels helpen de lezer te begrijpen naar welke data ze kijken. Matplotlib biedt plt.title(), plt.xlabel() en plt.ylabel() om een plot te annoteren. Hier is de vorige scatterplot met alle drie toegevoegd:

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.title('DJIA 2022: Open vs. Close Price')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()

image8.png

Kleuren aanpassen

Kleurkeuzes beïnvloeden zowel de leesbaarheid als de nadruk. In Matplotlib kun je kleuren op drie manieren opgeven:

  • Benoemde kleuren: "red", "blue", "steelblue"

  • Hex-codes: "#f4db9a", "#383c4a"

  • RGB-tuplets: (0.49, 0.39, 0.15), (0.12, 0.21, 0.47)

Lijnkleur wijzigen

Voor een lijnplot kun je de kleur wijzigen met het attribuut color in plt.plot(). Hieronder veranderen we de kleur van onze lijn voor de openingskoers naar “black” en die van de slotkoers naar “red”.

plt.plot(djia_data['Date'], djia_data['Open'], color = 'black')
plt.plot(djia_data['Date'], djia_data['Close'], color = 'red')
plt.show()

image3.png

Balkkleur wijzigen

Voor balken kunnen we een lijst doorgeven aan het attribuut color om de kleur van elke balk te specificeren. Stel dat we de gemiddelde prijs in januari willen benadrukken voor een punt dat we willen maken over hoe sterk de gemiddelde slotkoers was. Dat kan door die balk een unieke kleur te geven om er de aandacht op te vestigen.

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'], color = ['blue', 'gray', 'gray', 'gray', 'gray', 'gray'])
plt.show()

image11.png

Puntkleur wijzigen

Voor scatterplots kunnen we ten slotte de kleur veranderen met het attribuut color van plt.scatter(). We kleuren alle punten in januari blauw en alle andere punten grijs om een vergelijkbaar verhaal te laten zien als in de bovenstaande visualisatie.

plt.scatter(djia_data[djia_data['Month'] == 'January']['Open'], djia_data[djia_data['Month'] == 'January']['Close'], color = 'blue')

plt.scatter(djia_data[djia_data['Month'] != 'January']['Open'], djia_data[djia_data['Month'] != 'January']['Close'], color = 'gray')

plt.show()

image18.png
Colormaps gebruiken

Colormaps zijn ingebouwde kleurenscha len in Matplotlib die numerieke waarden aan een kleurverloop koppelen (officiële documentatie). Voor een diepere blik, zie onze tutorial Matplotlib Colormaps. De colormaps zien er over het algemeen esthetisch goed samen uit en helpen een verhaal te vertellen in de stijgende waarden.

In het onderstaande voorbeeld gebruiken we een colormap door de slotkoers (y-variabele) door te geven aan het attribuut c, en de plasma-colormap via cmap. We zien dat naarmate de waarden toenemen, de bijbehorende kleur lichter en geler wordt, terwijl het lagere uiteinde paars en donkerder is.

plt.scatter(djia_data['Open'], djia_data['Close'], c=djia_data['Close'], cmap = plt.cm.plasma)

plt.show()

 image6.png

Aslimieten instellen

Soms is het handig om naar een specifiek bereik aan waarden in een plot te kijken. Als de DJIA bijvoorbeeld rond $30.000 handelt, kan het zijn dat we alleen gedrag rond die prijs belangrijk vinden. We kunnen een tuple doorgeven aan plt.xlim() en plt.ylim() om respectievelijk de x- en y-limieten in te stellen. De eerste waarde in de tuple is de ondergrens en de tweede waarde de bovengrens.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.xlim((29000, 34000))
plt.ylim((29000, 34000))
plt.title('DJIA Open vs Close (Zoomed In)')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()

image15.png

Plots opslaan

Als je tevreden bent met een plot, kun je hem opslaan naar een bestand. Matplotlib ondersteunt PNG, PDF, SVG en andere formaten via plt.savefig(). Het formaat wordt afgeleid van de bestandsextensie.

We kunnen plots die we in matplotlib maken opslaan met de methode plt.savefig(). We kunnen het bestand opslaan in veel verschillende bestandsformaten, waaronder ‘png’, ‘pdf’ en ‘svg’. Het eerste argument is de bestandsnaam. Het formaat wordt afgeleid van de bestandsextensie (of je kunt dit overschrijven met het argument format).

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.savefig('DJIA 2022 Scatterplot Open vs. Close.png')

Tot slot

Deze tutorial besprak lijnplots, staafplots en scatterplots, de drie grafiektypen waar je het vaakst naar zult grijpen. Matplotlib vereist meer code dan hoger-niveau bibliotheken zoals Seaborn of Plotly, maar die uitgebreidheid levert je pixel-nauwkeurige controle op over elk element in de figuur.

Vanaf hier raad ik aan om histogrammen, taartdiagrammen en colormaps te verkennen als volgende stappen. Als je een gestructureerde deep dive wilt, behandelt de cursus Introduction to Data Visualization with Matplotlib subplots, styling en het delen van figuren in vier uur.

Matplotlib FAQ

Wat is Matplotlib in Python?

Matplotlib is een populaire visualisatiebibliotheek voor data in Python. Het wordt vaak gebruikt om statische, interactieve en geanimeerde visualisaties in Python te maken. Met Matplotlib kun je met slechts een paar regels code grafieken, histogrammen, staafdiagrammen, scatterplots enz. genereren.

Waarom zou ik Matplotlib gebruiken voor datavisualisatie?

Daar zijn meerdere redenen voor. Ten eerste is Matplotlib flexibel. Het ondersteunt een breed scala aan grafieken en plots en integreert goed met veel andere Python-bibliotheken, zoals NumPy en pandas. Ten tweede is het een volwassen en veelgebruikte bibliotheek, met een sterke community en veel bronnen en tutorials. Tot slot kun je, omdat het in Python is, je plots automatiseren en aanpassen als onderdeel van je datapijplijnen.

Hoe installeer ik Matplotlib?

Je kunt Matplotlib installeren met pip, de pakketbeheerder van Python. Open je terminal en typ: pip install matplotlib. Als je een Jupyter-notebook gebruikt, kun je dit commando in een codecel uitvoeren door er een uitroepteken voor te zetten: !pip install matplotlib.

Hoe maak ik een basisplot in Matplotlib?

Hier is een eenvoudig voorbeeld. Eerst moet je de Matplotlib-bibliotheek importeren. De meest gebruikte module is pyplot, en die wordt doorgaans geïmporteerd met het alias plt:

import matplotlib.pyplot as plt

Vervolgens kun je zo een basislijnplot maken:

plt.plot([1, 2, 3, 4]) plt.ylabel('Some Numbers') plt.show()

In dit voorbeeld wordt plt.plot([1, 2, 3, 4]) gebruikt om de opgegeven lijst met getallen te plotten. De regel plt.ylabel('Some Numbers') stelt het label voor de y-as in, en plt.show() toont de plot.


Author
Kevin Babitz
LinkedIn

Data Science-schrijver | Senior Technical Marketing Analyst bij Wayfair | MSE in Data Science aan de University of Pennsylvania

Onderwerpen
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 zienMeer zien