Pandas & NumPy Academy · Les

Labels, titels en figuren opslaan

Voeg aslabels, een titel, een legenda en opmaak voor schaalverdelingen toe en sla vervolgens figuren van publicatiekwaliteit op met savefig().

Les 4 van 413 stappen

Labels, titels en figuren opslaan is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 4 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.

Van grafiek naar publicatie

Een grafiek is alleen effectief als de assen gelabeld zijn, de titel de belangrijkste conclusie uitlegt en de grafiek met voldoende resolutie wordt opgeslagen voor het beoogde medium. In deze les behandelen we de laatste aanpassingen die een snelle verkennende grafiek omvormen tot een verzorgde figuur die geschikt is voor een rapport, dashboard of academische publicatie: aslabels, opmaak van schaalwaarden, titels, legenda's, annotaties en het exporteren van bestanden.

Aslabels met set_xlabel en set_ylabel

Stel beschrijvende aslabels in met ax.set_xlabel() en ax.set_ylabel(). Vermeld altijd de eenheden in het label (bijvoorbeeld 'Revenue (USD)' in plaats van alleen 'Revenue'). Gebruik fontsize om labels groter te maken voor presentaties en labelpad om ruimte toe te voegen tussen de as en de labeltekst wanneer de schaalwaarden groot zijn.

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')

ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()

Titels met set_title en suptitle

ax.set_title() stelt de titel boven één Axes in. Voor figuren met meerdere panelen voegt fig.suptitle() een gedeelde titel boven alle subplots toe. Regel de tekengrootte met fontsize en de verticale positie met y (standaard 1.0). Een goede titel vermeldt het belangrijkste inzicht uit de grafiek, niet alleen wat de assen voorstellen — vergelijk 'Monthly Revenue' met 'Revenue Peaked in Q3 and Fell 20% in Q4'.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)

ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)

# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()

Schaalwaarden beheren

De standaardlabels voor schaalwaarden van Matplotlib zijn vaak voldoende, maar soms heb je aangepaste labels nodig. Gebruik ax.set_xticks() om de posities van schaalwaarden op te geven en ax.set_xticklabels() om de labels in te stellen. Geef rotation=45 door om lange labels schuin te zetten, zodat ze elkaar niet overlappen. Met de parameter ha='right' (horizontale uitlijning) worden gedraaide labels correct aan hun schaalmarkering verankerd.

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)

fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Waarden van schaalmarkeringen opmaken

Gebruik de opmaakfuncties van matplotlib.ticker om waarden bij schaalmarkeringen in een voor mensen leesbare notatie weer te geven. FuncFormatter neemt een functie die de waarde van de schaalmarkering ontvangt en een opgemaakte tekenreeks retourneert. Veelvoorkomende patronen zijn: scheidingstekens voor duizendtallen, valutasymbool, procentteken en wetenschappelijke notatie. Pas dit toe met ax.yaxis.set_major_formatter(formatter).

from matplotlib.ticker import FuncFormatter

def millions_fmt(x, pos):
    return f'${x/1e6:.1f}M'

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Legenda's met ax.legend()

Roep ax.legend() aan om een legenda weer te geven voor alle grafiekelementen waarvoor een label-parameter is ingesteld. Pas de legenda aan met loc (positie, bijvoorbeeld 'upper right' of 'lower left'), ncol (aantal kolommen), framealpha (transparantie van het kader) en fontsize. Als je de legenda buiten het grafiekgebied wilt plaatsen, gebruik je bbox_to_anchor in combinatie met loc.

fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
    ax.plot(range(12), np.random.randint(100, 400, 12),
            marker='o', label=region, color=color)

ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()

Tekstannotaties toevoegen

ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) voegt een tekstlabel toe met een optionele pijl die naar een specifiek gegevenspunt wijst. Gebruik dit om maximumwaarden, afwijkingen of belangrijke gebeurtenissen in een grafiek te benadrukken. De dictionary arrowprops bepaalt de stijl van de pijl: arrowstyle='->' is een eenvoudige pijl.

y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
            xy=(peak_idx, y_vals[peak_idx]),
            xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
            arrowprops={'arrowstyle': '->', 'color': 'red'},
            fontsize=10, color='red')
plt.close()

Horizontale en verticale referentielijnen toevoegen

ax.axhline(y_value) tekent een horizontale lijn over de volledige breedte van de Axes op de opgegeven y-waarde. ax.axvline(x_value) tekent een verticale lijn. Beide accepteren de parameters color, linestyle en linewidth. Referentielijnen worden vaak gebruikt om doelen, drempelwaarden of gebeurtenisdatums in tijdreeksgrafieken aan te geven.

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')

# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')

# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')

ax.legend()
ax.set_title('Revenue vs Target')
plt.close()

Opmaak met thema's

Matplotlib bevat verschillende ingebouwde stijlbladen die het algemene uiterlijk van alle figuren wijzigen zonder aanpassingen aan de code: 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh' enzovoort. Pas een stijl toe met plt.style.use('style_name') aan het begin van je script. Gebruik plt.style.context('style_name') als contextmanager om een stijl alleen binnen een codeblok toe te passen.

# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()

# Reset to default
plt.rcdefaults()

Figuren opslaan met savefig()

fig.savefig('filename.png') slaat de figuur op in een bestand. Belangrijke parameters zijn: dpi (dots per inch — gebruik 150 voor een scherm en 300 voor drukwerk), bbox_inches='tight' (voorkomt dat labels worden afgesneden) en format (afgeleid van de extensie of expliciet opgegeven). Veelgebruikte indelingen zijn: '.png' (raster, geschikt voor het web), '.pdf' (vector, geschikt voor drukwerk) en '.svg' (vector, bewerkbaar in Illustrator).

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')

# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')

# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')

plt.close()
print('Figures saved.')

Compleet voorbeeld: verzorgde rapportgrafiek

Hier is een volledige werkstroom waarin alle technieken uit deze les worden gecombineerd: een verzorgde tijdreeks grafiek met aslabels, opgemaakte y-aswaarden, een horizontale doellijn, een annotatie bij de piek en export naar een PNG met hoge resolutie. Dit is het patroon dat je gebruikt voor elke grafiek die in een rapport of dashboard terechtkomt.

from matplotlib.ticker import FuncFormatter

fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)

ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
            xytext=(peak_idx-1.5, peak+15),
            arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
                    'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()

Korte controle

Toets je begrip van labels, titels en het opslaan van figuren uit deze les.

Samenvatting van de les

In deze les heb je geleerd dat set_xlabel()/set_ylabel()/set_title() beschrijvende tekst toevoegen; FuncFormatter schaalwaarden opmaakt als valuta of percentages; ax.annotate() tekstlabels met een aanwijspijl toevoegt om belangrijke gegevenspunten te benadrukken; axhline()/axvline() referentielijnen tekenen; en fig.savefig() met dpi en bbox_inches='tight' exports van publicatiekwaliteit oplevert. Hiermee is de cursus Matplotlib Fundamentals voltooid — hierna behandelen we Seaborn voor statistische grafieken.

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 “Labels, titels en figuren opslaan” gratis?

Ja — de volledige tekst van “Labels, titels en figuren opslaan” 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 “Labels, titels en figuren opslaan”?

Voeg aslabels, een titel, een legenda en opmaak voor schaalverdelingen toe en sla vervolgens figuren van publicatiekwaliteit op met savefig(). 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 4 van 4.

Hoe lang duurt de les “Labels, titels en figuren opslaan”?

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. Architectuur van Figure en Axes
  2. Lijn- en spreidingsgrafieken
  3. Staafdiagrammen en histogrammen
  4. Labels, titels en figuren opslaan
← Terug naar Pandas & NumPy Academy