Last chance! 50% off DataCamp Premium
Sale ends in
Cirkeldiagrammen zijn een van de populairste grafieken om verhoudingen te visualiseren. Je kent ze vast al, maar zo niet: stel je een grote taart of een ronde Zwitserse kaas voor, in stukken gesneden van verschillende groottes.
Python biedt meerdere manieren om cirkeldiagrammen te maken. In deze tutorial focussen we op het maken van cirkeldiagrammen in Python met Matplotlib en Pandas, twee van de populairste pakketten voor data-analyse in Python. We structureren het artikel per methode, zodat je je kunt richten op de aanpak en syntaxis die het beste bij je workflow past.
Naast deze methoden geven we ook enkele tips om de foutopsporing, toegankelijkheid en bruikbaarheid van cirkeldiagrammen te verbeteren. Tot slot bekijken we ook andere grafiekalternatieven die in bepaalde situaties geschikter kunnen zijn dan cirkeldiagrammen.
Ik laat je twee verschillende manieren zien om een Python-cirkeldiagram te maken, en je kunt zelf beslissen welke methode je verkiest. Beide zijn populair en goede opties, dus je kunt niet echt misgaan.
Laten we beginnen met het analyseren van hoe je een cirkeldiagram maakt met Matplotlib.
Voor deze sectie analyseren we gegevens over de verschillende cursussen in de DataCamp-catalogus, die je hier kunt vinden. (Ik heb de catalogus doorgenomen en geteld hoeveel cursussen er per technologie beschikbaar zijn en hiervan een tabel gemaakt.)
Om ons eerste cirkeldiagram met Matplotlib te maken, kunnen we de functie plt.pie() gebruiken. We gebruiken een lijst met het aantal beschikbare cursussen voor verschillende data- en AI-technologieën (elk vertegenwoordigt de grootte van een segment), en een tweede lijst met de namen van de technologieën, die we opnemen in de grafiek met de labels parameter. Als alternatief kun je plt.legend() gebruiken om een aparte legenda toe te voegen.
Vergeet zoals gewoonlijk niet om aan het einde van je code plt.show() uit te voeren om de Matplotlib-plot correct weer te geven.
import pandas as pd
import matplotlib.pyplot as plt
courses = [164, 127, 31, 31,12, 11]
labels = ['Python','R','SQL','Power BI','Excel','ChatGPT']
dictionary = {'courses':courses, 'labels':labels}
python_pie_chart_df = pd.DataFrame(dictionary)
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels)
plt.show()

plt.pie(x = python_pie_chart_df.courses)
plt.legend(labels = python_pie_chart_df.labels, loc = [0.95,0.35])
plt.show()

Daarnaast kunnen we ook het percentage van elk segment opnemen met de parameter autopct. In het volgende voorbeeld tonen we de grootte van de segmenten met één decimaal.
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, autopct='%1.1f%%')
plt.show()

Cirkeldiagrammen in Matplotlib, net als de segmenten waaruit ze bestaan, zijn sterk aanpasbaar. Laten we enkele opties bekijken die de functie pie.plot() biedt.
Om de kleur van de segmenten te veranderen, kunnen we de parameter colors gebruiken. We gebruiken deze parameter om het DataCamp-kleurenpalet op onze grafiek toe te passen.
datacamp_palette = ['#03ef62','#06bdfc','#ff6ea9','#ff931e','#ff5400','#7933ff']
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%')
plt.show()

Ziet er al een stuk beter uit, toch? Maar we kunnen nog veel meer doen om ons cirkeldiagram aan te passen. Zo kunnen we spelen met de afstand van de labels en de percentages met respectievelijk de parameters labeldistance en pctdistance, en een hoek kiezen om het snijden te starten met de parameter startangle.
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1, startangle=180)
plt.show()

Stel tot slot dat je een presentatie geeft en je wilt focussen op R-cursussen. Een handige manier om dit te benadrukken is door dat segment te laten "uitsteken" met de parameter explode, als volgt:
explode = (0, 0.1, 0, 0, 0, 0) # only "explode" the 2nd slice (i.e. 'R')
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels,
colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1,
startangle=180, explode=explode)
plt.show()

Nadat je je cirkeldiagram hebt gemaakt, ben je klaar om het te delen met je samenwerkers. Dat kan met de functie plt.savefig() die de bestandsnaam als invoer neemt en je toelaat op te slaan in verschillende formaten, zoals .png, .jpg, .svg of .pdf. Daarnaast kun je met dpi de resolutie van de afbeelding wijzigen.
Hier is een voorbeeld van hoe je je cirkeldiagram opslaat in .jpg-formaat met 200 dots per inch.
plt.pie(x = df.courses, labels = df.labels,
colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1,
startangle=180, explode=explode)
plt.savefig('demo.jpg', dpi =200)
Je kunt meer leren over het juist opslaan van visualisaties in onze cursus Introduction to Data Visualization with Matplotlib.
Nu je weet hoe je een cirkeldiagram met Matplotlib maakt, kijken we hoe het werkt in Pandas.
Pandas heeft een plot()-methode die kan worden gebruikt om verschillende soorten plots te tekenen. Deze methode werkt zowel op DataFrame- als Series-objecten in Pandas. Het argument kind in de plot()-methode helpt je het type plot te specificeren. In ons geval kun je een cirkeldiagram maken met kind ='pie'. Je kunt ook de parameter labels gebruiken om elke sector van een naam te voorzien en de parameter autopct om de percentages van elke sector toe te voegen.
python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%')
plt.show()

De plot()-methode van Pandas is een handig hulpmiddel voor snel plotten, maar heeft beperkte aanpassingsopties. Gelukkig gebruikt de methode Matplotlib als backend, wat betekent dat je buiten de methode om Matplotlib-syntaxis kunt gebruiken om je visualisatie aan te passen. Hieronder vind je een voorbeeld van hoe je Pandas en Matplotlib combineert.
ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%',
colors=datacamp_palette, figsize=(5,5))
ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)
plt.show()

Cirkeldiagrammen opslaan in Pandas werkt exact hetzelfde als in Matplotlib, omdat Pandas onder de motorkap op Matplotlib leunt.
ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%',
colors=datacamp_palette, figsize=(5,5))
ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)
plt.savefig('demo.png')
Om ervoor te zorgen dat je cirkeldiagrammen correct worden weergegeven, moet je Matplotlib van de juiste data voorzien. Dat betekent dat je altijd datacleaning-technieken op je dataframe toepast, zoals het verwijderen van null-waarden met pd.dropna() en het instellen van de juiste datatypen voor je invoerkolommen.
Bovendien is maatwerk cruciaal om een overtuigend en impactvol cirkeldiagram te tonen. Houd er echter rekening mee dat geavanceerde aanpassingen, zoals "exploding", mogelijk niet worden ondersteund als je Pandas gebruikt. Zoals al genoemd: als je meer controle over je cirkeldiagram nodig hebt, moet je mogelijk Matplotlib-code toevoegen aan je scripts.
Houd je aan goede praktijken wanneer je je cirkeldiagrammen presenteert.
Datavisualisatie kun je zien als een kunst. Intuïtie en goede smaak maken verschil, maar houd altijd rekening met de theorie erachter. Wil je meer weten over best practices voor effectieve datavisualisatie? Bekijk dan onze Data Storytelling & Communication Cheat Sheet. Werk je met dashboards, dan is dit artikel over Best Practices voor het ontwerpen van dashboards de moeite waard.
Eerlijk is eerlijk: cirkeldiagrammen behoren tot de meest bekritiseerde grafieken. Het is aangetoond dat mensen niet zo goed zijn in het interpreteren van hoeken. Dat kunnen we illustreren met het cirkeldiagram dat we eerder gebruikten. Kijk naar de segmenten Excel en ChatGPT. Kun je in één oogopslag zeggen welk segment de grootste hoek heeft?

Waarschijnlijk niet, en daarom raden veel experts in datavisualisatie aan om andere grafieken te gebruiken om verhoudingen weer te geven, zeker bij veel categorieën, zoals staafdiagrammen en gestapelde staafdiagrammen, treemaps of zelfs donutdiagrammen. Je kunt meer over deze alternatieven lezen in ons artikel Types of Data Plots and How to Create Them in Python.
Gefeliciteerd dat je het einde van de tutorial hebt gehaald. Python is een zeer veelzijdige programmeertaal met verschillende libraries en benaderingen om cirkeldiagrammen te maken. In deze tutorial hebben we geanalyseerd hoe je cirkeldiagrammen maakt met Matplotlib en Pandas. Beide zijn even geschikt voor de taak en vertonen duidelijke overeenkomsten. Het idee is niet om er één te kiezen, maar om ze afwisselend te gebruiken, afhankelijk van je behoeften en workflow.
Wil je meer weten over cirkeldiagrammen en breder over datavisualisatie in Python, dan helpt DataCamp je graag op weg. Bekijk ons gerichte lesmateriaal en maak je klaar om een visualisatiewizard te worden!
Ik ben een freelance data-analist en werk samen met bedrijven en organisaties wereldwijd aan datascienceprojecten. Ook geef ik les in data science en heb ik meer dan twee jaar ervaring als docent. Ik schrijf regelmatig artikelen over data science in het Engels en Spaans; sommige daarvan zijn gepubliceerd op bekende platforms zoals DataCamp, Towards Data Science en Analytics Vidhya. Als data scientist met een achtergrond in politicologie en recht wil ik werken op het snijvlak van openbaar beleid, recht en technologie. Ik zet de kracht van ideeën in om innovatieve oplossingen en verhalen te ontwikkelen die helpen bij het aanpakken van urgente uitdagingen, met name de klimaatcrisis. Ik beschouw mezelf als autodidact, een eeuwige leerling en een groot voorstander van multidisciplinariteit. Het is nooit te laat om nieuwe dingen te leren.
Een cirkeldiagram is een soort grafiek waarin een cirkel is opgedeeld in sectoren die elk een deel van het geheel voorstellen. Het is dus geschikt om verhoudingen weer te geven.
De makkelijkste manier om een cirkeldiagram met Matplotlib te maken is met de functie plt.pie(), die diverse parameters voor aanpassing biedt.
De makkelijkste manier om een cirkeldiagram met Pandas te maken is met de methode Series.plot.(kind=’pie’). Hiermee visualiseer je snel op Pandas-DataFrames, maar de aanpassingsopties zijn beperkter dan in Matplotlib.
Volg altijd best practices bij het maken van je visualisaties. Houd je cirkeldiagrammen zo eenvoudig mogelijk, vermijd onnodige elementen, kies intuïtieve kleurenpaletten en stem de grafiek af op je publiek.
Mensen zijn niet zo goed in het interpreteren van hoeken; daarom raden veel visualisatie-experts aan om andere grafieken te gebruiken om verhoudingen te tonen, zoals staafdiagrammen.
Leer met DataCamp
Cursus
Cursus
Cursus

blog
Adel Nehme
15 min