Visualiseren met Matplotlib en Seaborn

Zet pandas-tabellen met Python om in heldere grafieken. Maak figuren en grafiekgebieden in Matplotlib, teken lijndiagrammen, spreidingsdiagrammen en staafdiagrammen en maak rechtstreeks vanuit pandas grafieken nadat je de gegevens hebt geaggregeerd en geherstructureerd. Gebruik seaborn voor statistische grafieken, histogrammen, boxplots en hittekaarten, vergelijk groepen met herhaalde deelgrafieken en deelgrafieken per groep, en rond elke figuur af met labels en annotaties voordat je die exporteert voor een rapport of het web.

GemiddeldLes 7 van 8 in Cursus Data-analyse met Python: NumPy, pandas en visualisatie

Wat je leert

  1. Maak een figuur met grafiekgebieden via de objectgeoriënteerde interface van Matplotlib, teken daarin lijndiagrammen, spreidingsdiagrammen en staafdiagrammen en bepaal titels, labels, maatstreepjes, grenzen, legenda's en stijlen.
    • Maak een figuur met grafiekgebieden
      Begrijp hoe een grafiek in Matplotlib is opgebouwd uit een figuur, een of meer grafiekgebieden en de elementen die daarin worden getekend, en kies tussen pyplot en de objectgeoriënteerde manier om grafiekcode te schrijven.
    • Teken lijndiagrammen en spreidingsdiagrammen
      Teken waarden langs een geordende as met ax.plot en afzonderlijke waarnemingen met ax.scatter, en bepaal kleur, lijnstijl, markeringen, markeringsgrootte en transparantie.
    • Vergelijk categorieën met staafdiagrammen
      Teken verticale, horizontale, gegroepeerde en gestapelde staafdiagrammen met ax.bar en ax.barh, en voorzie de staven van hun waarden.
    • Voorzie een grafiek van labels, stel de schaal in en pas de stijl aan
      Stel titels, aslabels, grenzen, maatstreepjes, de opmaak van aslabels, schalen, legenda's en rasters in, en verander het algemene uiterlijk van grafieken met stijlbladen en instellingen.
  2. Teken grafieken rechtstreeks vanuit Series en DataFrames met de plot-methode van pandas en aggregeer, sorteer en herstructureer tabellen eerst, zodat elke grafiek de bedoelde waarden toont.
    • Gebruik de plot-methode van pandas
      Maak lijndiagrammen, staafdiagrammen, histogrammen, boxplots, vlakdiagrammen, cirkeldiagrammen en spreidingsdiagrammen vanuit een Series of DataFrame en pas de Matplotlib-grafiekgebieden aan die ze teruggeven.
    • Herstructureer de gegevens voordat je een grafiek maakt
      Aggregeer, tel, sorteer en zet een tabel om naar breed of lang formaat, zodat die precies de waarden bevat die een grafiek moet tonen, in het formaat dat pandas of seaborn verwacht.
  3. Gebruik seaborn om DataFrame-kolommen te koppelen aan posities, kleuren en stijlen, toon verbanden tussen numerieke variabelen met samenvattingen van trends en vergelijk groepen met grafieken voor categorische gegevens.
    • Koppel kolommen aan visuele kenmerken in seaborn
      Geef DataFrame-kolommen op voor positie, kleur, stijl en grootte, onderscheid functies voor één grafiekgebied van functies voor een volledige figuur en stel seaborn-thema's en -paletten in.
    • Toon verbanden tussen numerieke variabelen
      Teken met seaborn spreidingsdiagrammen, geaggregeerde lijndiagrammen met onzekerheidsbanden, regressielijnen en matrices van spreidingsdiagrammen, en lees wat de banden en lijnen wel en niet tonen.
    • Vergelijk groepen met grafieken voor categorische gegevens
      Vergelijk een numerieke variabele tussen categorieën met staafdiagrammen, frequentiestaafdiagrammen, puntdiagrammen, puntenstrookdiagrammen en zwermdiagrammen, en kies hun schatter, foutbalken, volgorde en oriëntatie.
  4. Toon hoe een numerieke variabele is verdeeld met histogrammen, dichtheidskrommen, boxplots en viooldiagrammen, en geef een tabel met waarden of correlaties weer als hittekaart.
    • Toon een verdeling met histogrammen en dichtheidskrommen
      Maak histogrammen in Matplotlib, pandas en seaborn, kies klassen en schalen en voeg afgevlakte dichtheidskrommen toe of vergelijk ze.
    • Vat verdelingen samen en vergelijk ze met boxplots
      Lees en teken boxplots op basis van kwartielen en de 1,5 × IQR-regel, vergelijk er groepen mee en gebruik viooldiagrammen en puntenstrookdiagrammen om te tonen wat een box verbergt.
    • Geef een waardenraster weer als hittekaart
      Zet een draaitabel of correlatiematrix om in een hittekaart met seaborn of Matplotlib en bepaal annotaties, getalnotaties, kleurenschalen en grenzen van de kleurenschaal.
  5. Rangschik herhaalde deelgrafieken met Matplotlib-subplots en deelgrafieken per groep in seaborn, wijs met tekst, pijlen en referentielijnen op wat belangrijk is en sla figuren op in het juiste formaat en de juiste grootte voor rapporten en het web.
    • Rangschik meerdere grafieken in één figuur
      Maak rasters van grafiekgebieden met plt.subplots, deel schalen tussen deelgrafieken, vul de deelgrafieken in een lus, pas tussenruimte en titels aan en maak deelgrafieken van ongelijke grootte.
    • Verdeel gegevens met seaborn over deelgrafieken per groep
      Verdeel een grafiek in deelgrafieken op basis van één of twee categorische variabelen met de argumenten col, row en col_wrap van functies voor een volledige figuur of met FacetGrid, en pas het resulterende raster aan.
    • Voeg annotaties en referentielijnen toe
      Plaats tekst, pijlen, referentielijnen, gearceerde bereiken en waardelabels in een grafiek, in gegevenscoördinaten of in coördinaten relatief aan het grafiekgebied.
    • Sla figuren op voor rapporten en het web
      Exporteer figuren met savefig in raster- of vectorformaten, bepaal grootte, resolutie, marges en achtergrond en sla op het juiste moment op in scripts, notebooks en lussen.

Matplotlib en Seaborn: uitleg

5 hoofdstukken

1

Maak grafieken met figuren en grafiekgebieden van Matplotlib

Een grafiekopdracht heeft een plek nodig om te tekenen. Matplotlib maakt die plek expliciet: een figuur bevat een of meer grafiekgebieden en elk gebied bevat de getekende elementen en labels. Begin met één gebied en gebruik daarna dezelfde objecten om lijnen, punten, staven en nuttige instellingen toe te voegen. Als je de figuur en elk grafiekgebied een naam geeft, kun je gemakkelijker de juiste grafiek aanpassen wanneer een notebook groeit of een figuur meerdere deelgrafieken bevat.

1.1 Maak een figuur met grafiekgebieden

Matplotlib is de standaardbibliotheek voor grafieken in Python; zowel pandas als seaborn tekent ermee. De gebruikelijke import is import matplotlib.pyplot as plt. In een Jupyter-notebook verschijnt een grafiek onder de cel die de grafiek tekent; in een script toont plt.show() de open figuren en wacht in een normaal script tot de vensters zijn gesloten.

Een figuur is het volledige canvas: de afbeelding die wordt getoond of opgeslagen. Een grafiekgebied is één gebied binnen de figuur waarin een grafiek wordt getekend, met eigen gegevens, een titel, aslabels en grenzen; één figuur kan er meerdere bevatten. Een as is één getallenas van een grafiekgebied, de x-as of de y-as, met maatstreepjes en bijbehorende labels. Elk zichtbaar element, zoals een lijn, markering, tekst of staaf, heet een grafisch object.

fig, ax = plt.subplots() maakt een figuur met één grafiekgebied en geeft beide objecten terug. figsize=(width, height) stelt de figuurafmetingen in inches in. De standaard is 6,4 × 4,8 inch bij 100 punten per inch, dus een standaardfiguur is 640 × 480 pixels op het scherm; plt.subplots(figsize=(8, 4)) maakt een bredere, plattere figuur.

Matplotlib biedt twee stijlen. In de objectgeoriënteerde stijl roep je methoden aan op expliciete objecten: ax.plot(...), ax.set_title(...). In de pyplot-stijl werken functies zoals plt.plot(...) en plt.title(...) op het “huidige” grafiekgebied, meestal het laatst aangemaakte. Beide tekenen dezelfde grafieken; de objectgeoriënteerde stijl is duidelijker zodra een figuur meer dan één grafiekgebied heeft of grafiekcode in een functie staat, dus deze cursus gebruikt die stijl.

De twee stijlen gebruiken verschillende namen voor dezelfde instellingen: plt.title, plt.xlabel en plt.xlim komen overeen met ax.set_title, ax.set_xlabel en ax.set_xlim. Een veelgemaakte fout is ax.title("Rainfall"): bij een grafiekgebied is title een attribuut dat een tekstobject bevat, dus aanroepen geeft TypeError: 'Text' object is not callable. Gebruik ax.set_title("Rainfall").

months = [1, 2, 3, 4, 5, 6]; temp_c = [3, 5, 9, 13, 17, 20], daarna

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(months, temp_c)
ax.set_title("Mean monthly temperature")
ax.set_xlabel("Month")
ax.set_ylabel("Temperature (°C)")

.

Tekenaanroepen voegen iets toe aan een grafiekgebied; ze vervangen niet wat er al staat. Een tweede ax.plot(...) op dezelfde ax voegt een tweede lijn aan dezelfde grafiek toe. Voor een aparte grafiek maak je een nieuwe figuur met nog een aanroep van plt.subplots(), of teken je in een ander grafiekgebied van een figuur met meerdere deelgrafieken.

pyplot houdt elke figuur die het heeft gemaakt open totdat je die sluit met plt.close(fig) of plt.close("all"). Open figuren gebruiken geheugen en zodra er meer dan 20 open zijn, waarschuwt Matplotlib daarvoor. Code die in een lus figuren maakt, moet elke figuur na het opslaan sluiten.

Belangrijkste punten

  • Een figuur is het canvas; een grafiekgebied is een gebied waarin een grafiek wordt getekend.
  • Roep methoden aan op het grafiekgebied dat je wilt wijzigen.
  • Opnieuw tekenen in hetzelfde grafiekgebied voegt grafische objecten toe.
  • Sluit opgeslagen figuren in lussen.

1.2 Teken lijndiagrammen en spreidingsdiagrammen

ax.plot(x, y) tekent markeringen of rechte lijnstukken die de punten verbinden in de opgegeven volgorde. Een lijndiagram past bij een grootheid die is gemeten langs een geordende variabele zoals tijd of afstand. Met één argument, ax.plot(y), zijn de standaardwaarden voor x 0, 1, 2, ….

Omdat punten in de opgegeven volgorde worden verbonden, leveren ongesorteerde x-waarden een zigzaglijn op die heen en weer over de grafiek loopt. Bij x = [3, 1, 2] loopt de lijn van x = 3 terug naar x = 1 en vervolgens vooruit naar x = 2. Sorteer de gegevens eerst op x, bijvoorbeeld met df.sort_values("x").

Stijlargumenten: color (een naam zoals "black" of "tab:orange", of een hexcode zoals "#1f77b4"), linestyle ("-" doorgetrokken, "--" gestreept, ":" gestippeld, "-." streep-punt), linewidth, marker ("o" cirkel, "s" vierkant, "^" driehoek) en markersize. Een korte opmaaktekenreeks combineert markering en lijnstijl: ax.plot(x, y, "o--") tekent cirkels die met een streeplijn zijn verbonden. Zonder color krijgt elke nieuwe lijn de volgende kleur uit de standaardreeks, die begint met "tab:blue" en "tab:orange".

Geef elke lijn een label en roep ax.legend() aan om een legenda te tonen:

ax.plot(months, north, marker="o", label="North")
ax.plot(months, coast, linestyle="--", label="Coast")
ax.legend()

. Als geen enkel grafisch object een label heeft, tekent ax.legend() niets en waarschuwt Matplotlib dat er geen grafische objecten met labels zijn gevonden.

ax.scatter(x, y) tekent per waarneming één losse markering en past bij het verband tussen twee numerieke variabelen. Voorbeeld: dagtemperatuur [12, 15, 18, 21, 24, 27, 30, 22] °C en fietsverhuur [180, 220, 260, 310, 330, 360, 340, 250]; ax.scatter(temp_c, rentals) laat zien dat de fietsverhuur meestal stijgt met de temperatuur en de correlatie van de twee lijsten is ongeveer 0,92.

In ax.scatter bepaalt s de oppervlakte van elke markering in kwadraatpunten; de standaardwaarde is 36, de oppervlakte van een markering van 6 punten breed. Als je s verdubbelt, verdubbelt de oppervlakte, dus de breedte van de markering neemt slechts met een factor van ongeveer 1,4 toe. s kan één getal zijn of één waarde per punt, zodat de markeringsgrootte een derde variabele kan tonen.

c kleurt de punten: één kleur voor alle punten, of één getal per punt dat via een kleurenschaal zoals cmap="viridis" aan een kleur wordt gekoppeld. Bewaar het teruggegeven object en voeg een kleurenbalk toe: sc = ax.scatter(temp_c, rentals, c=rain_mm, cmap="viridis"); fig.colorbar(sc, ax=ax, label="Rain (mm)").

Als veel punten elkaar overlappen, veranderen dichtbevolkte gebieden in dichte vlekken en is niet meer te zien hoeveel punten ze bevatten. Verlaag de dekking met alpha=0.3, gebruik kleinere markeringen of toon in plaats daarvan de dichtheid, bijvoorbeeld met een grafiek met zeshoekige klassen (df.plot.hexbin) of een tweedimensionaal histogram.

ax.plot(x, y, "o") met een markering en zonder lijn tekent ook punten en is sneller bij zeer veel punten, omdat alle markeringen dezelfde grootte en kleur hebben. Gebruik ax.scatter als de grootte of kleur per punt moet verschillen.

Belangrijkste punten

  • Lijnen verbinden punten in de opgegeven volgorde.
  • De grootte van een spreidingsmarkering is een oppervlakte in kwadraatpunten.
  • Een koppeling van numerieke waarden aan kleuren heeft een kleurenbalk nodig.
  • Gebruik labels en een legenda om reeksen te herkennen.
  • Transparantie helpt om overlappende waarnemingen zichtbaar te maken.

1.3 Vergelijk categorieën met staafdiagrammen

ax.bar(categories, heights) tekent één verticale staaf per categorie; ax.barh(categories, widths) tekent horizontale staven, die ruimte laten voor lange categorienamen. Als de categorieën tekenreeksen zijn, plaatst Matplotlib ze op gelijke afstand in de opgegeven volgorde en gebruikt ze als labels bij de maatstreepjes. Zijn het getallen, dan staan de staven op die numerieke posities op een gewone getallenas.

Staven beginnen standaard bij een basislijn van 0, zodat de lengte van een staaf de waarde toont. Het argument width wordt gemeten in eenheden van de x-as en is standaard 0,8. Categorieën als tekenreeksen worden op één eenheid afstand geplaatst, dus de standaardwaarde laat een ruimte van 0,2 tussen de staven; met width=1 raken aangrenzende staven elkaar.

Aan 200 forensen is gevraagd hoe ze gewoonlijk reizen: auto 84, bus 52, fiets 38, lopen 26. ax.barh(["Car", "Bus", "Bike", "Walk"], [84, 52, 38, 26]) tekent vier horizontale staven. De aandelen zijn 42%, 26%, 19% en 13%, samen 100%.

ax.barh zet de eerste categorie onderaan de as, omdat de y-as naar boven oploopt. Om een gerangschikte lijst van bovenaf te lezen, zoals in het voorbeeld over woon-werkverkeer, roep je ax.invert_yaxis() aan of keer je zowel de categorieën als hun waarden om voordat je de grafiek tekent, zodat elke waarde bij de bijbehorende categorie blijft.

Gegroepeerde staven plaatsen meerdere reeksen naast elkaar binnen elke categorie. Gebruik numerieke posities en verschuif elke reeks met een halve staafbreedte:

x = np.arange(3)
ax.bar(x - 0.2, north, width=0.4, label="North")
ax.bar(x + 0.2, coast, width=0.4, label="Coast")
ax.set_xticks(x, labels=["Jan", "Feb", "Mar"])
ax.legend()

. De staven voor North staan op −0,2, 0,8 en 1,8, die voor Coast op 0,2, 1,2 en 2,2, gecentreerd rond elk maatstreepje.

Gestapelde staven tekenen met bottom= een tweede reeks boven op de eerste: ax.bar(days, car); ax.bar(days, bus, bottom=car). Als er op een dag 40 autoritten en 25 busritten zijn, loopt het busdeel van 40 tot 65 en is de totale staafhoogte 65.

bars = ax.bar(...) geeft een verzameling staven terug; ax.bar_label(bars) schrijft elke waarde aan het uiteinde van de bijbehorende staaf. fmt bepaalt de tekst: fmt="%.1f" schrijft 3,14 als “3.1” en fmt="{:.0f} km" schrijft die als “3 km”.

Matplotlib tekent staven in de volgorde van de gegevens, niet op grootte. Sorteer voor een gerangschikte grafiek eerst de waarden, bijvoorbeeld met sorted() op paren of sort_values() in pandas. Het argument yerr= voegt aan elke staaf foutbalken met een opgegeven lengte toe; ax.errorbar(x, y, yerr=...) doet hetzelfde voor punten.

Een staafdiagram vergelijkt waarden van afzonderlijke categorieën, dus de staven staan met tussenruimten van elkaar. Een histogram toont daarentegen hoe één numerieke variabele over aangrenzende intervallen is verdeeld, en de staven raken elkaar. Metingen tekenen als één staaf per gegevensrij levert een staafdiagram van ruwe waarden op, geen histogram.

Belangrijkste punten

  • Houd categorieën bij het sorteren gekoppeld aan hun waarden.
  • Gegroepeerde staven gebruiken verschuivingen rond de maatstreepjes van de categorieën.
  • Gestapelde staven gebruiken cumulatieve ondergrenzen.
  • Staaflabels horen bij de teruggegeven verzameling staven.

1.4 Voorzie een grafiek van labels, stel de schaal in en pas de stijl aan

Stel tekst in met ax.set_title("..."), ax.set_xlabel("...") en ax.set_ylabel("..."), of met één aanroep: ax.set(title="Monthly rainfall", xlabel="Month", ylabel="Rainfall (mm)"). Zet de eenheid in het aslabel, bijvoorbeeld “Neerslag (mm)” of “Afstand (km)”, zodat elke waarde bij een maatstreepje betekenis heeft.

Matplotlib kiest de asgrenzen op basis van de gegevens met een kleine marge. Stel ze zelf in met ax.set_xlim(1, 12) en ax.set_ylim(0, 120), of leg alleen één uiteinde vast met ax.set_ylim(bottom=0). ax.set(xlim=(1, 12), ylim=(0, 120)) doet hetzelfde in één aanroep.

ax.set_xticks([1, 4, 7, 10]) kiest de posities van de maatstreepjes en ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"]) vervangt ook hun labels. Draai labels die te dicht op elkaar staan met ax.tick_params(axis="x", labelrotation=45). Opmaakfuncties voor aslabels veranderen hoe waarden worden geschreven: ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0)), met PercentFormatter geïmporteerd uit matplotlib.ticker, geeft de waarde 0,25 het label “25%”.

ax.set_yscale("log") zet de y-as op een logaritmische schaal, waarbij gelijke afstanden staan voor gelijke verhoudingen: de stap van 10 naar 100 is even lang als die van 100 naar 1.000. Dit past bij waarden die meerdere ordes van grootte beslaan, zoals inwoneraantallen van steden. Een logaritmische as kan geen nul of negatieve waarden tonen.

ax.legend() plaatst de legenda waar die de minste punten bedekt (loc="best", de standaard voor een legenda in een grafiekgebied). Kies een plek met loc="upper left", voeg een kop toe met title="Station" en verdeel de items over kolommen met ncols=2. ax.legend(bbox_to_anchor=(1.02, 1), loc="upper left") plaatst de legenda net buiten de rechterrand van het grafiekgebied.

ax.grid(True, alpha=0.3) voegt lichte rasterlijnen toe bij de maatstreepjes; ax.grid(axis="y") tekent alleen horizontale lijnen, wat helpt bij het aflezen van staafhoogtes.

Stijlbladen veranderen het standaarduiterlijk van elke volgende grafiek: plt.style.use("ggplot"). plt.style.available toont de geïnstalleerde stijlen; de stijlen die op seaborn lijken en met Matplotlib worden meegeleverd, heten bijvoorbeeld "seaborn-v0_8-whitegrid". Gebruik with plt.style.context("ggplot"): om een stijl alleen op één codeblok toe te passen.

Afzonderlijke standaardinstellingen staan in plt.rcParams, bijvoorbeeld plt.rcParams["font.size"] = 12 of plt.rcParams["figure.figsize"] = (8, 4). Ze gelden voor figuren die daarna worden gemaakt en plt.rcdefaults() herstelt de standaardinstellingen van Matplotlib.

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot([1, 2, 3, 4], [62, 48, 55, 40], marker="o", label="North")
ax.set(title="Monthly rainfall, January to April", xlabel="Month", ylabel="Rainfall (mm)", ylim=(0, 70))
ax.set_xticks([1, 2, 3, 4], labels=["Jan", "Feb", "Mar", "Apr"])
ax.legend()
ax.grid(axis="y", alpha=0.3)

.

In een figuur met meerdere grafiekgebieden veranderen pyplot-functies zoals plt.title of plt.xlabel alleen het huidige grafiekgebied, meestal het laatst aangemaakte. Daardoor kan een titel in de verkeerde deelgrafiek terechtkomen. Door de methoden van het bedoelde grafiekgebied aan te roepen, zoals axes[0].set_title(...), voorkom je dit.

Belangrijkste punten

  • De opmaak van aslabels verandert labels zonder de waarden te veranderen.
  • Logaritmische schalen tonen gelijke verhoudingen als gelijke afstanden.
  • Stijlen en rcParams stellen standaardwaarden in voor latere grafieken.
2

Maak grafieken rechtstreeks vanuit pandas

Een pandas-tabel bevat vaak al de labels en waarden die een grafiek nodig heeft. De grafiekmethoden gebruiken die labels om een Matplotlib-grafiek te maken, die je daarna met dezelfde methoden kunt afwerken als een zelf opgebouwde grafiek. Het belangrijkste werk gebeurt vaak vóór het tekenen: bepalen wat één rij voorstelt, de juiste samenvatting berekenen en de tabel zo indelen dat groepen, reeksen en hun volgorde bij de vraag passen.

2.1 Gebruik de plot-methode van pandas

Maak de brede neerslagtabel met één kolom per station:

import pandas as pd
wide = pd.DataFrame({
    "North": [62, 48, 55, 40],
    "Coast": [110, 95, 80, 60],
    "Valley": [20, 15, 30, 45]
}, index=pd.Index(["Jan", "Feb", "Mar", "Apr"], name="month"))

Elke pandas-Series en elk pandas-DataFrame heeft een .plot-methode die met Matplotlib tekent en het Matplotlib-grafiekgebied teruggeeft waarin is getekend. df.plot(kind="bar") en df.plot.bar() zijn dezelfde aanroep. De typen zijn "line" (de standaard), "bar", "barh", "hist", "box", "kde" of "density", "area", "pie", "scatter" en "hexbin".

Standaard wordt de index de x-as en wordt elke numerieke kolom een lijn, met een legenda op basis van de kolomnamen. Een Series zet de waarden uit tegen de index. Om kolommen te kiezen geef je x="month" en y="rain_mm" door, of een lijst zoals y=["North", "Coast"].

Een tabel wide met de index Jan, Feb, Mar, Apr en de kolommen North [62, 48, 55, 40], Coast [110, 95, 80, 60] en Valley [20, 15, 30, 45], allemaal in millimeters neerslag. ax = wide.plot(marker="o", figsize=(8, 4), title="Monthly rainfall"); ax.set_ylabel("Rainfall (mm)") tekent drie lijnen met labels in één grafiekgebied en stelt daarna het y-label in met een gewone Matplotlib-methode.

Veelgebruikte argumenten van .plot: title, xlabel, ylabel, xlim, ylim, figsize, color, legend=False, rot (draaiing van de labels bij maatstreepjes in graden), grid=True en logy=True. Met ax= teken je in een bestaand grafiekgebied, bijvoorbeeld een deelgrafiek van plt.subplots(1, 2), in plaats van in een nieuwe figuur.

subplots=True tekent elke kolom in een eigen grafiekgebied en geeft een NumPy-array van grafiekgebieden terug in plaats van één grafiekgebied; layout=(2, 2) rangschikt ze in een raster en sharey=True geeft ze een gezamenlijke y-schaal. Voor de tabel met drie stations geeft wide.plot(subplots=True, layout=(1, 3), sharey=True) één deelgrafiek per station.

Spreidingsdiagrammen en grafieken met zeshoekige klassen bestaan alleen voor DataFrames en hebben zowel x als y nodig: days.plot.scatter(x="temp_c", y="rentals", c="rain_mm", colormap="viridis") kleurt de punten naar neerslag. Een Series heeft geen spreidingsdiagram, dus s.plot.scatter() geeft een fout. df.plot.hist(bins=5) en df.plot.box() geven van elke numerieke kolom een histogram en een boxplot.

s.plot.pie() tekent per waarde een sector, waarvan de grootte het aandeel in het totaal weergeeft. Omdat cirkeldiagrammen een Series met niet-negatieve delen van één geheel nodig hebben, is een kolom met aantallen zoals s.value_counts() een gebruikelijke invoer.

Staafdiagrammen in pandas behandelen de index als categorieën en plaatsen de staven op posities 0, 1, 2, …, ongeacht de indexwaarden. Lijndiagrammen gebruiken de werkelijke indexwaarden als die getallen of datums zijn. Een lijn en staven uit pandas die in hetzelfde grafiekgebied zijn getekend, vallen daarom alleen samen als de x-waarden van de lijn overeenkomen met de staafposities, zoals bij een standaardindex 0, 1, 2, …; bij jaren zoals 2020 tot en met 2023 ligt de lijn ver rechts van de staven. Zet beide uit tegen dezelfde posities als je ze combineert.

Met een DatetimeIndex zet .plot() datums op de x-as en voorziet ze automatisch van labels. Daggegevens worden vaak duidelijker na resampling, bijvoorbeeld naar maandgemiddelden met s.resample("MS").mean().plot().

.plot tekent alleen numerieke kolommen. Als getallen als tekst zijn ingelezen, bijvoorbeeld omdat een kolom “12 mm” bevat, wordt de kolom overgeslagen. Als er geen numerieke gegevens overblijven, geeft pandas TypeError: no numeric data to plot. Converteer de kolom eerst, bijvoorbeeld met pd.to_numeric(...).

Belangrijkste punten

  • Pandas tekent numerieke gegevens en gebruikt standaard de index.
  • Geef een grafiekgebied door met ax= om een deelgrafiek opnieuw te gebruiken.
  • Afzonderlijke deelgrafieken geven een array van grafiekgebieden terug.
  • Pandas gebruikt voor staven en numerieke lijnen verschillende positieregels.

2.2 Herstructureer de gegevens voordat je een grafiek maakt

Een grafiek tekent de waarden die in de tabel staan, dus vat eerst samen. Voorbeeld: een lange tabel rain met 12 rijen, één per station en maand, en de kolommen month, station en rain_mm. rain.groupby("station")["rain_mm"].mean() geeft één gemiddelde per station: Coast 86,25 mm, North 51,25 mm en Valley 27,5 mm. Door .plot.bar() toe te voegen teken je drie staven.

Als je per ongeluk de ruwe rijen tekent, krijg je afzonderlijke metingen in plaats van de gevraagde gemiddelden: rain.plot.bar(x="station", y="rain_mm") tekent 12 staven met herhaalde stationsnamen in plaats van drie gemiddelden.

Sorteer vóór het tekenen om gerangschikte staven te krijgen: means.sort_values(ascending=False).plot.bar() zet het grootste gemiddelde links. Voor een horizontale grafiek zet means.sort_values().plot.barh() het grootste gemiddelde bovenaan, omdat de eerste waarde onderaan wordt getekend.

s.value_counts() telt hoe vaak elke categorie voorkomt en geeft de aantallen van meest naar minst voorkomend. Voor de vervoerswijzen “bus”, “auto”, “bus”, “fiets”, “bus”, “auto” geeft dit bus 3, auto 2, fiets 1, klaar voor .plot.bar(). Gebruik .sort_index() of .reindex([...]) als de categorieën een natuurlijke volgorde hebben, zoals dagen van de week.

Een DataFrame in breed formaat, met één kolom per reeks, geeft in pandas per kolom één lijn of staafkleur. Zet een lange tabel om met rain.pivot(index="month", columns="station", values="rain_mm"). Als een combinatie van index en kolom meer dan eens voorkomt, geeft pivot een fout; gebruik dan pivot_table(..., aggfunc="mean") of groupby(["month", "station"])["rain_mm"].mean().unstack().

pivot en pivot_table sorteren de nieuwe index, zodat maanden als tekenreeksen in alfabetische volgorde verschijnen: Apr, Feb, Jan, Mar. Een lijndiagram loopt dan in de verkeerde volgorde door de maanden. Herstel de werkelijke volgorde met wide.reindex(["Jan", "Feb", "Mar", "Apr"]), of sla de maand vóór het omzetten op als geordende categorische variabele of als maandnummer.

Bij een brede tabel tekent wide.plot.bar() gegroepeerde staven, één groep per indexlabel en één kleur per kolom, terwijl wide.plot.bar(stacked=True) de kolommen stapelt. De getransponeerde tabel wide.T.plot.bar() wisselt de rollen om: één groep per station, één kleur per maand.

Normaliseer een kruistabel voor aandelen binnen elke groep: pd.crosstab(trips["region"], trips["mode"], normalize="index") deelt elk aantal door het rijtotaal, zodat elke rij optelt tot 1. Als regio N twee autoritten en één busrit heeft, bevat de rij auto 0,67 en bus 0,33 (afgerond). .plot.bar(stacked=True) tekent dan staven met dezelfde totale hoogte die de samenstelling van elke regio tonen.

seaborn werkt het best met gegevens in lang formaat: één rij per waarneming en één kolom per variabele. wide.reset_index().melt(id_vars="month", var_name="station", value_name="rain_mm") zet de brede tabel van 4 × 3 terug om in 12 rijen met drie kolommen, zodat station kan worden gebruikt voor kleur of deelgrafieken per groep.

Belangrijkste punten

  • Aggregeer rijen voordat je de gevraagde samenvatting tekent.
  • Een dubbele combinatie bij pivoteren vereist een aggregatieregel.
  • Breed formaat past bij reeksen in kolommen; lang formaat past bij koppelingen aan visuele kenmerken.
  • Herstel na het herstructureren een betekenisvolle categorievolgorde.
  • Normaliseer elke rij om groepsaandelen te vergelijken.
3

Maak statistische grafieken met seaborn

Statistische grafieken koppelen tabelkolommen aan visuele kenmerken en berekenen vaak tijdens het tekenen een samenvatting. Seaborn voert beide taken uit via benoemde argumenten. Een korte aanroep kan groepen in verschillende kleuren tonen, herhaalde waarnemingen middelen of een tabel in deelgrafieken verdelen. Let goed op deze standaardinstellingen: een grafiek met afzonderlijke waarnemingen en een grafiek met groepsgemiddelden kunnen uitgaan van dezelfde rijen, maar verschillende vragen beantwoorden.

3.1 Koppel kolommen aan visuele kenmerken in seaborn

seaborn is een grafiekbibliotheek die op Matplotlib is gebouwd, rechtstreeks met pandas-DataFrames werkt en zelf veelgebruikte statistische samenvattingen berekent. De gebruikelijke import is import seaborn as sns. Een typische aanroep noemt de tabel en de kolommen: sns.scatterplot(data=days, x="temp_c", y="rentals").

Naast x en y kun je kolommen aan andere kenmerken koppelen: hue bepaalt de kleur, style de markering of het streeppatroon en size de markeringsgrootte of lijnbreedte. seaborn kiest zelf de kleuren en maakt de legenda. Een categorische hue-kolom krijgt afzonderlijke kleuren; een numerieke krijgt een kleurverloop.

Elke koppeling vereist een kolom in lang formaat. Met de lange neerslagtabel tekent sns.lineplot(data=rain, x="month", y="rain_mm", hue="station", marker="o") per station een gekleurde lijn met een legenda. Als hue een kolom noemt die niet in de tabel staat, geeft seaborn een ValueError met de melding dat de waarde niet kon worden geïnterpreteerd.

Als x tekenreeksen bevat, plaatst seaborn de categorieën in de volgorde waarin ze voor het eerst in de gegevens voorkomen. Maanden die in die rijvolgorde zijn opgeslagen als “Jan”, “Feb”, “Mar” blijven dus in kalendervolgorde. De functies voor categorische gegevens, zoals barplot, boxplot en countplot, accepteren order=["Mon", "Tue", "Wed"] om de categorievolgorde in te stellen. hue_order bepaalt de volgorde van de kleurgroepen in elke functie met hue. lineplot heeft geen argument order: maak de x-kolom daar een geordende categorische variabele om de volgorde van maandnamen vast te leggen, bijvoorbeeld pd.Categorical(rain["month"], categories=["Jan", "Feb", "Mar", "Apr"], ordered=True).

Functies voor één grafiekgebied, zoals scatterplot, lineplot, histplot, boxplot, barplot en heatmap, tekenen in één Matplotlib-grafiekgebied, accepteren ax= om dat grafiekgebied te kiezen en geven het terug. Functies voor een volledige figuur, relplot, displot, catplot en lmplot, maken hun eigen figuur, kunnen die met col en row in deelgrafieken verdelen en geven een seaborn-FacetGrid-object terug.

Bij functies voor een volledige figuur stel je de grootte per deelgrafiek in: height is de hoogte van elke deelgrafiek in inches en aspect de breedte-hoogteverhouding, dus elke deelgrafiek is height × aspect inch breed; de standaardwaarden zijn 5 en 1. Omdat deze functies hun eigen figuur maken, kunnen ze niet in een bestaand grafiekgebied tekenen: relplot, displot en catplot waarschuwen en negeren ax=, en lmplot wijst het af met een TypeError. Ze plaatsen de legenda buiten de deelgrafieken.

sns.set_theme() geeft alle volgende grafieken, ook gewone Matplotlib-grafieken, het uiterlijk van seaborn: de stijl “darkgrid”, de context “notebook” en het standaardpalet van seaborn. style kan “darkgrid”, “whitegrid”, “dark”, “white” of “ticks” zijn; context kan “paper”, “notebook”, “talk” of “poster” zijn en schaalt lettertypen en lijnen, bijvoorbeeld van een basislettergrootte van 12 punten voor “notebook” naar 18 punten voor “talk”.

palette kiest de kleuren voor hue, bijvoorbeeld palette="colorblind", "Set2" of "viridis". In seaborn 0.13 is het doorgeven van palette zonder hue verouderd; om staven per categorie te kleuren, stel je hue in op dezelfde kolom als x en voeg je legend=False toe: sns.barplot(data=rain, x="station", y="rain_mm", hue="station", legend=False).

Je kunt het resultaat afwerken met Matplotlib:

ax = sns.scatterplot(...)
ax.set(xlabel="Temperature (°C)", ylabel="Rentals per day", title="Rentals and temperature")

. Gebruik voor het resultaat van een functie voor een volledige figuur de methoden van het raster, zoals g.set_axis_labels("Temperature (°C)", "Rentals per day"), en g.figure.suptitle("...") voor een overkoepelende titel.

Belangrijkste punten

  • Koppelingen aan visuele kenmerken verbinden kolommen met kenmerken van de grafiek.
  • Functies voor één grafiekgebied accepteren een bestaand grafiekgebied.
  • Functies voor een volledige figuur maken hun eigen deelgrafieken en bepalen de grootte ervan.
  • Thema's beïnvloeden latere grafieken van beide bibliotheken.

3.2 Toon verbanden tussen numerieke variabelen

sns.scatterplot(data=days, x="temp_c", y="rentals", hue="weekday", size="rain_mm") tekent één punt per rij, waarvan kleur en grootte worden bepaald door andere kolommen. Als je hue en style met dezelfde kolom combineert, krijgt elke groep een eigen kleur en markering, die ook in grijstinten te onderscheiden zijn.

sns.lineplot aggregeert standaard: als meerdere rijen dezelfde x-waarde hebben, tekent de functie de lijn door het gemiddelde van hun y-waarden en kleurt een band voor het 95%-betrouwbaarheidsinterval van dat gemiddelde, berekend met bootstrapping. Uitgewerkt voorbeeld: bij x = 1 zijn de y-waarden 10, 12 en 14, bij x = 2 zijn ze 20, 21 en 25; de lijn loopt door 12 en 22.

De standaardband toont de onzekerheid van elk gemiddelde, niet het bereik van de gegevens. errorbar="sd" kleurt in plaats daarvan een band van één standaardafwijking boven en onder het gemiddelde, errorbar=None verwijdert de band en estimator=None tekent samen met units= elke afzonderlijke reeks zonder te middelen. Met één rij per x-waarde valt er niets te middelen en is er geen band.

sns.regplot(data=days, x="temp_c", y="rentals") tekent een spreidingsdiagram met een rechte lijn volgens de kleinste-kwadratenmethode en een ingekleurde 95%-betrouwbaarheidsband voor die lijn; order=2 past in plaats daarvan een kwadratische kromme aan. sns.lmplot doet hetzelfde als functie voor een volledige figuur en kan de gegevens dus ook verdelen met hue, col of row.

Een aangepaste lijn vat de gegevens samen met het model dat je hebt gekozen. Een rechte lijn kan door krom verlopende gegevens worden getekend, dus bekijk de punten rond de lijn voordat je erop vertrouwt. Een sterke trend toont dat de variabelen in deze gegevens samenhangen, zonder een oorzaak vast te stellen.

sns.pairplot(df) tekent een raster met een spreidingsdiagram voor elk paar numerieke kolommen en de verdeling van elke kolom op de diagonaal: standaard histogrammen, en dichtheidskrommen als hue is ingesteld. Vier numerieke kolommen geven een raster van 4 × 4 met 16 deelgrafieken. corner=True behoudt alleen de onderste driehoek en vars=[...] beperkt de kolommen. De functie geeft een PairGrid terug.

sns.jointplot(data=days, x="temp_c", y="rentals") tekent een spreidingsdiagram met langs de randen het histogram van elke variabele; kind="hex" vervangt de punten door zeshoekige klassen, wat helpt bij grote datasets.

sns.relplot(..., kind="scatter") en sns.relplot(..., kind="line") zijn de versies van scatterplot en lineplot voor een volledige figuur; een spreidingsdiagram is het standaardtype. Gebruik ze als hetzelfde verband voor elke groep in een aparte deelgrafiek moet worden getoond.

sns.regplot(data=days, x="temp_c", y="rentals") toont dat de fietsverhuur stijgt van 180 bij 12 °C naar ongeveer 350 op de warmste dagen, met een correlatie van ongeveer 0,92. Op de dag met 30 °C zijn er minder verhuringen (340) dan op de dag met 27 °C (360), dus vlakken de punten bovenaan af; je kunt een aangepaste kwadratische kromme (order=2) vergelijken met de rechte lijn.

Belangrijkste punten

  • Standaard middelen lijnen van seaborn herhaalde waarnemingen.
  • Een betrouwbaarheidsband beschrijft de onzekerheid van een schatting.
  • Gebruik het argument units en geen schatter (estimator) om afzonderlijke trajecten te behouden.
  • Bekijk zowel de punten als de aangepaste lijnen.
  • Matrices van spreidingsdiagrammen vergelijken variabelen en hun verdelingen.

3.3 Vergelijk groepen met grafieken voor categorische gegevens

De functies voor categorische gegevens van seaborn plaatsen elke categorie op posities 0, 1, 2, … op de categorische as. Zelfs getallen worden als labels behandeld: de jaren 2020, 2021 en 2023 worden op gelijke afstand getekend, zonder ruimte voor 2022. native_scale=True behoudt een numerieke as met de werkelijke afstanden.

sns.barplot(data=rain, x="station", y="rain_mm") tekent per station één staaf waarvan de hoogte het gemiddelde van de rijen is, met een foutbalk voor het 95%-betrouwbaarheidsinterval van dat gemiddelde. Bij de neerslagtabel zijn de staven Coast 86,25, North 51,25 en Valley 27,5 mm. estimator="median" of estimator="sum" verandert de samenvatting; errorbar="sd" of errorbar=None verandert of verwijdert de foutbalken.

sns.countplot(data=trips, x="mode") telt de rijen in elke categorie en heeft geen numerieke kolom nodig; sns.barplot vat een numerieke kolom samen. Gebruik countplot voor “hoeveel exemplaren” en barplot voor “hoeveel gemiddeld”.

sns.pointplot toont het gemiddelde van elke groep als een punt met een foutbalk en verbindt de punten van elke hue-groep met een lijn. Zo kun je veranderingen tussen categorieën eenvoudig vergelijken, bijvoorbeeld de gemiddelde neerslag van drie stations in elk van vier maanden.

Een staaf met een gemiddelde verbergt de spreiding en het aantal waarnemingen: een gemiddelde van 3 rijen ziet er even overtuigend uit als een gemiddelde van 300. De gegevens tonen is vaak beter: sns.stripplot tekent elke waarneming als een punt met een kleine willekeurige puntverschuiving en sns.swarmplot rangschikt de punten zo dat ze elkaar niet overlappen. Een puntenstrookdiagram kan over een boxplot of staafdiagram in hetzelfde grafiekgebied worden getekend.

Met hue plaatsen staafdiagrammen, boxplots en viooldiagrammen de groepen standaard naast elkaar binnen elke categorie. Punt-, puntenstrook- en zwermdiagrammen tekenen de groepen op dezelfde positie, tenzij dodge=True is ingesteld, zodat hun punten kunnen overlappen. Stel de categorievolgorde in met order=[...] en de groepsvolgorde met hue_order=[...].

De oriëntatie volgt uit de gegevens: zet de categorieën op de y-as en de getallen op de x-as, sns.barplot(data=rain, x="rain_mm", y="station"), voor horizontale staven met leesbare lange labels. orient="y" (of "h") geeft dit expliciet aan.

sns.catplot is de functie voor een volledige figuur voor alle grafieken voor categorische gegevens. De kind kan “strip” (de standaard), “swarm”, “box”, “violin”, “boxen”, “point”, “bar” of “count” zijn, en col of row verdeelt de grafiek in deelgrafieken.

Belangrijkste punten

  • Frequentiestaafdiagrammen tellen rijen; staafdiagrammen vatten numerieke waarden samen.
  • Puntenstrookdiagrammen en zwermdiagrammen tonen waarnemingen.
  • Groepen naast elkaar plaatsen scheidt kleurgroepen binnen een categorie.
4

Visualiseer verdelingen en waardenrasters

Een verdelingsgrafiek beschrijft een verzameling metingen, terwijl een hittekaart een tabel met kleuren beschrijft. Deze grafieken vatten veel waarden samen, dus hun instellingen beïnvloeden wat je kunt aflezen. Klassengrenzen bepalen welke waarnemingen samen worden geteld; kwartielen en snorren vatten verschillende delen van een steekproef samen; een kleurenschaal koppelt getallen aan kleurtinten. Doorloop die berekeningen voordat je de uiteindelijke afbeelding interpreteert.

4.1 Toon een verdeling met histogrammen en dichtheidskrommen

Een histogram verdeelt het bereik van een numerieke variabele in aangrenzende intervallen, klassen genoemd, en tekent boven elke klasse een staaf waarvan de hoogte het aantal waarnemingen in die klasse is. Het toont de vorm van een verdeling: waar waarden geconcentreerd zijn, hoe sterk ze zijn verspreid, of ze scheef verdeeld zijn en waar hiaten of ongebruikelijke waarden zitten.

counts, edges, patches = ax.hist(data, bins=5) tekent het histogram en geeft het aantal in elke klasse en de klassengrenzen terug. Bij een geheel getal hebben de klassen gelijke breedte van het minimum tot het maximum; de standaard is 10 klassen. Elke klasse bevat de linkergrens en sluit de rechtergrens uit, behalve de laatste klasse, die beide grenzen bevat.

20 reistijden voor woon-werkverkeer in minuten: 12, 15, 18, 20, 22, 22, 25, 27, 28, 30, 31, 33, 35, 38, 40, 42, 45, 50, 55, 62. Met bins=5 zijn de grenzen 12, 22, 32, 42, 52 en 62 en de aantallen 4, 7, 4, 3 en 2. De waarde 22 valt in de tweede klasse omdat klassen hun rechtergrens uitsluiten, en 62 telt mee in de laatste klasse omdat die klasse de grens wel bevat.

Het aantal en de positie van klassen veranderen het beeld. Dezelfde 20 tijden met grenzen [10, 20, 30, 40, 50, 60, 70] geven de aantallen 3, 6, 5, 3, 2 en 1. Te weinig klassen verbergen de vorm; te veel geven een grillige grafiek met veel bijna lege klassen. Probeer verschillende instellingen en kies bij voorkeur ronde klassengrenzen die lezers kunnen interpreteren, zoals stappen van 10 minuten.

density=True in Matplotlib, of stat="density" in seaborn, schaalt de staven zodat hun totale oppervlakte 1 is: elke hoogte is aantal ÷ (n × klassebreedte). Voor de gegevens over woon-werkverkeer met vijf klassen van 10 minuten is de hoogte van de tweede staaf 7 ÷ (20 × 10) = 0,035 per minuut. Een dichtheidshoogte is geen kans; hoogte × klassebreedte is het aandeel waarnemingen in de klasse.

sns.histplot(data=commutes, x="minutes") tekent een histogram met seaborn; bins en binwidth bepalen de klassen. stat kiest de hoogte: “count” (standaard), “probability” of “proportion” (hoogtes tellen op tot 1), “percent” (hoogtes tellen op tot 100) en “density” (oppervlakte 1). Voor de vijf klassen met reistijden geeft “probability” 0,2, 0,35, 0,2, 0,15 en 0,1.

Om groepen te vergelijken legt sns.histplot(data=commutes, x="minutes", hue="mode") per groep een histogram over de andere heen; multiple="stack" stapelt ze, multiple="dodge" zet ze naast elkaar en element="step" tekent omtreklijnen die bij overlap beter leesbaar zijn. Met stat="density", common_norm=False kun je groepen van verschillende grootte eerlijk vergelijken, doordat elke groep wordt geschaald naar een oppervlakte van 1.

Een kerndichtheidsschatting is een vloeiende kromme die de vorm van de verdeling schat; de oppervlakte eronder is 1. sns.kdeplot(data=commutes, x="minutes") tekent de kromme en sns.histplot(..., kde=True) voegt die toe aan een histogram. Een bw_adjust boven 1 maakt de kromme vloeiender, onder 1 gedetailleerder.

Een KDE-kromme loopt verder dan de kleinste en grootste waarden en kan dus dichtheid onder 0 minuten tonen voor tijden die niet negatief kunnen zijn. cut=0 stopt de kromme bij de grenzen van de gegevens. Bij kleine steekproeven kan de kromme een vorm suggereren die de gegevens niet ondersteunen.

In pandas tekent commutes["minutes"].plot.hist(bins=5, edgecolor="white") een histogram (standaard 10 klassen) en tekent df.hist() één histogram per numerieke kolom in een raster. In seaborn is sns.displot de versie voor een volledige figuur: kind="hist" (standaard), kind="kde" of kind="ecdf", waarbij een ECDF voor elke waarde het aandeel waarnemingen op of onder die waarde toont.

Belangrijkste punten

  • De grenzen van een histogram bepalen in welke klasse een waarneming valt.
  • Dichtheid gebruikt oppervlakte om een aandeel weer te geven.
  • Een KDE vlakt een verdeling af en hangt af van de bandbreedte.
  • Normaliseer groepen afzonderlijk om vormen te vergelijken.

4.2 Vat verdelingen samen en vergelijk ze met boxplots

Een boxplot vat een verdeling samen: de box loopt van het eerste kwartiel (Q1) tot het derde kwartiel (Q3), een lijn in de box markeert de mediaan, snorren lopen naar de kleinste en grootste gebruikelijke waarden en punten buiten de snorren worden afzonderlijk getekend als mogelijke uitschieters. De interkwartielafstand IQR = Q3 − Q1 is de lengte van de box en omvat de middelste helft van de gegevens.

Standaard gebruiken Matplotlib, pandas en seaborn whis=1.5: de uitschietergrenzen zijn Q1 − 1,5 × IQR en Q3 + 1,5 × IQR. Elke snor eindigt bij de meest extreme gegevenswaarde binnen de bijbehorende grens, niet bij de grens zelf, en elke waarde buiten de grenzen wordt als afzonderlijk punt getekend.

11 bezorgtijden in minuten: 14, 16, 17, 18, 19, 20, 21, 22, 24, 25, 41. Matplotlib berekent Q1 = 17,5, mediaan = 20 en Q3 = 23, dus IQR = 5,5. De grenzen zijn 17,5 − 8,25 = 9,25 en 23 + 8,25 = 31,25. De onderste snor eindigt bij 14, de bovenste bij 25 en 41 wordt als uitschieterpunt getekend.

Kwartielen hangen af van de methode. De grafiekbibliotheken gebruiken lineaire interpolatie tussen gesorteerde waarden (de standaard in NumPy en pandas), wat hierboven 17,5 en 23 geeft. De handmatige methode waarbij je de medianen van de onderste en bovenste helft neemt zonder de algemene mediaan, geeft voor dezelfde gegevens Q1 = 17 en Q3 = 24. Beide zijn geldig; hierdoor ontstaan kleine verschillen tussen een handberekening en een grafiek.

Teken de samenvatting met de bibliotheek die je gebruikt: ax.boxplot([north, coast], tick_labels=["North", "Coast"]) in Matplotlib (vóór versie 3.9 heette het argument labels); rain.boxplot(column="rain_mm", by="station") in pandas, dat ook de overkoepelende titel “Boxplot grouped by station” toevoegt; sns.boxplot(data=rain, x="station", y="rain_mm") in seaborn, met hue voor een tweede groepering. whis=(0, 100) tekent de snorren tot het minimum en maximum en showfliers=False verbergt de uitschieterpunten.

Met boxplots naast elkaar vergelijk je groepen in één oogopslag: vergelijk de medianen, de lengtes van de boxen (de spreiding van de middelste helft) en de overlap van de boxen. Een mediaan dicht bij één uiteinde van de box, of een snor die veel langer is dan de andere, wijst op een scheve verdeling.

Een boxplot toont alleen vijf getallen en de uitschieters. De grafiek toont niet het aantal waarnemingen en heel verschillende vormen kunnen dezelfde box opleveren: een verdeling met twee afzonderlijke pieken en een verdeling met één piek kunnen dezelfde Q1, mediaan en Q3 hebben. Door de punten eroverheen te tekenen, sns.stripplot(data=rain, x="station", y="rain_mm", color="black", alpha=0.5), of een viooldiagram te gebruiken, maak je dit zichtbaar.

sns.violinplot(data=rain, x="station", y="rain_mm") tekent voor elke groep een gespiegelde dichtheidskromme met daarin een kleine boxplot (inner="box", de standaard); inner="quart" markeert in plaats daarvan de kwartielen met lijnen. Bij een hue met twee niveaus zet split=True aan elke kant van de viool één groep. Net als een KDE kan de viool buiten de gegevens doorlopen; cut=0 stopt de viool bij het waargenomen minimum en maximum.

Een punt dat door de 1,5 × IQR-regel wordt gemarkeerd, is ongebruikelijk ten opzichte van de rest van de gegevens, een reden om de waarde te onderzoeken. Controleer het: het kan een invoerfout zijn of een echte, belangrijke waarde, zoals een bezorging die door een wegafsluiting vertraging had. Als je punten alleen verwijdert omdat de grafiek ze markeert, vertekent dat de analyse.

Belangrijkste punten

  • De lengte van de box is de IQR.
  • Snorren eindigen bij waarnemingen binnen de uitschietergrenzen.
  • Kwartielmethoden kunnen verschillen.
  • Verborgen uitschieters blijven in de onderliggende gegevens staan.
  • Punten en viooldiagrammen tonen informatie die een box verbergt.

4.3 Geef een waardenraster weer als hittekaart

Een hittekaart toont een tabel met getallen als een raster van gekleurde cellen: rijen en kolommen zijn twee categorieën (of in klassen ingedeelde variabelen) en de kleur van elke cel staat voor de waarde. Een hittekaart past bij patronen in tweedimensionale tabellen, zoals bezoekers per dag en dagdeel, en bij correlatiematrices.

sns.heatmap(table) neemt een brede tabel, gebruikt de index als rijlabels en de kolommen als kolomlabels en voegt een kleurenbalk als legenda toe. De tabel komt meestal uit pivot_table: visits.pivot_table(index="day", columns="slot", values="visitors", aggfunc="mean").

Een museum telt bezoekers per dagdeel. Zaterdagochtend 120 en 140, zaterdagmiddag 200; zondagochtend 90, zondagmiddag 160; maandagochtend 40, maandagmiddag 70 en 90. De draaitabel met gemiddelden bevat Mon 40 en 80, Sat 130 en 200, Sun 90 en 160 (ochtend en middag). sns.heatmap(pt, annot=True, fmt=".0f", cmap="Blues") toont de drukste cel, zaterdagmiddag, als de donkerste. De draaitabel sorteert de dagen alfabetisch (Mon, Sat, Sun); met pt.reindex(["Sat", "Sun", "Mon"]) herstel je een gekozen volgorde.

annot=True schrijft elke waarde in de cel en fmt stelt de getalnotatie in. De standaard ".2g" behoudt twee significante cijfers, dus 43,25 wordt weergegeven als “43” en 1.234 als “1.2e+03”. Gebruik fmt=".0f" voor gehele getallen of fmt=".2f" voor twee decimalen; fmt="d" werkt alleen voor gegevens met een geheelgetaltype en geeft een ValueError bij drijvendekommagetallen.

Een correlatiehittekaart begint met corr = df.corr(numeric_only=True), een vierkante, symmetrische tabel waarvan de gedefinieerde coëfficiënten van −1 tot 1 lopen. Niet-constante numerieke kolommen hebben 1 op de diagonaal; constante kolommen hebben ongedefinieerde correlaties. In pandas 2 en later is de standaard voor numeric_only False, dus df.corr() geeft een fout als de tabel een tekstkolom heeft. Teken de hittekaart met sns.heatmap(corr, annot=True, fmt=".2f", cmap="vlag", vmin=-1, vmax=1, center=0).

Acht dagen met temperatuur (°C), fietsverhuur, neerslag (mm) en wind (km/h). De correlatiematrix geeft voor temperatuur en fietsverhuur 0,92, voor fietsverhuur en neerslag −0,82, voor neerslag en wind 0,75 en voor temperatuur en wind −0,38. Met de kleurenschaal “vlag” wordt het sterk positieve paar dieprood, het sterk negatieve paar diepblauw en het zwakke paar temperatuur en wind een bleke tint dicht bij het witte midden.

Zonder vmin en vmax lopen de kleuren van de kleinste tot de grootste waarde in die tabel, zodat dezelfde kleur in twee hittekaarten verschillende waarden kan betekenen. Leg de grenzen vast om hittekaarten te vergelijken en gebruik vmin=-1, vmax=1 voor correlaties. Een sequentiële kleurenschaal zoals “rocket” (de standaard van seaborn), “viridis” of “Blues” past bij waarden die van laag naar hoog lopen; een divergerende kleurenschaal zoals “vlag”, “coolwarm” of “RdBu_r”, met center op het betekenisvolle midden, past bij waarden boven en onder een referentiewaarde zoals 0. Als center is ingesteld en cmap niet, gebruikt seaborn de divergerende schaal “icefire”.

Handige opties: linewidths=0.5 tekent dunne lijnen tussen cellen, square=True maakt de cellen vierkant, cbar_kws={"label": "Visitors"} geeft de kleurenbalk een label en ontbrekende waarden (NaN) blijven leeg. mask=np.triu(np.ones_like(corr, dtype=bool)) verbergt de bovenste driehoek en de diagonaal van een correlatiematrix, die de onderste driehoek herhalen.

In Matplotlib tekent im = ax.imshow(values, cmap="viridis"); fig.colorbar(im, ax=ax) een hittekaart van een 2-dimensionale array, met rij 0 bovenaan; “viridis” is de standaardkleurenschaal van Matplotlib. imshow voorziet de assen van rij- en kolomnummers, dus stel namen zelf in: ax.set_xticks(range(len(cols)), labels=cols). ax.pcolormesh is een alternatief als cellen ongelijke afmetingen hebben.

Een correlatiecoëfficiënt meet alleen de sterkte van een lineaire samenhang. Een correlatie dicht bij 0 sluit een sterk kromlijnig verband niet uit en één uitschieter kan een coëfficiënt sterk verhogen of verlagen. Bekijk de bijbehorende spreidingsdiagrammen, bijvoorbeeld met een matrix van spreidingsdiagrammen, voordat je een correlatiehittekaart interpreteert.

Belangrijkste punten

  • Kleuren in een hittekaart geven tabelwaarden weer.
  • Leg de grenzen van de kleurenschaal vast om grafieken te vergelijken.
  • Correlatieschalen lopen van −1 tot 1.
  • Bekijk spreidingsdiagrammen voordat je correlaties interpreteert.
5

Maak figuren met meerdere deelgrafieken, voeg annotaties toe en exporteer ze

Een bruikbare figuur heeft vaak meerdere weergaven van dezelfde gegevens nodig. Met deelgrafieken kun je groepen vergelijken, annotaties verbinden een bewering met een specifieke waarde en exportinstellingen zetten het resultaat om in een afbeelding die bij de bestemming past. Houd tijdens dit proces de controle over de figuur. Het object dat je grafieken bevat, bevat ook hun totale grootte en is de betrouwbaarste manier om precies het resultaat op te slaan dat je hebt gemaakt.

5.1 Rangschik meerdere grafieken in één figuur

Herhaalde deelgrafieken zijn een reeks grafieken van hetzelfde type, één voor elke deelverzameling van de gegevens, getekend met dezelfde schalen en naast elkaar geplaatst zodat je de deelverzamelingen kunt vergelijken. In Matplotlib maak je ze als een raster van grafiekgebieden in één figuur.

fig, axes = plt.subplots(2, 3, figsize=(12, 6)) geeft een figuur en een NumPy-array van 2 × 3 grafiekgebieden terug. axes[0, 0] is de deelgrafiek linksboven en axes[1, 2] die rechtsonder. Met één rij of één kolom is de array eendimensionaal, dus plt.subplots(1, 3) geeft axes[0], axes[1] en axes[2]. axes.flat doorloopt alle deelgrafieken rij voor rij.

De array zelf kan niet tekenen: axes.plot(...) geeft AttributeError: 'numpy.ndarray' object has no attribute 'plot'. Selecteer eerst één deelgrafiek met een index, zoals in axes[0, 1].plot(...).

sharex=True en sharey=True geven alle deelgrafieken dezelfde x- of y-grenzen, zodat gelijke hoogtes in elke deelgrafiek gelijke waarden betekenen en alleen de buitenste deelgrafieken labels bij de maatstreepjes tonen. Zonder gedeelde assen schaalt elke deelgrafiek naar de eigen gegevens en kan een klein bereik even groot lijken als een groot bereik.

fig, axes = plt.subplots(2, 2, sharey=True, layout="constrained"), daarna for ax, (name, grp) in zip(axes.flat, rain.groupby("station")): ax.plot(grp["month_num"], grp["rain_mm"], marker="o"); ax.set_title(name). De drie stations vullen drie van de vier deelgrafieken; axes[1, 1].axis("off") verbergt de lege vierde.

Labels van aangrenzende deelgrafieken kunnen overlappen. layout="constrained" in plt.subplots of plt.figure past de tussenruimte automatisch aan; fig.tight_layout(), aangeroepen na het tekenen, is het oudere alternatief. fig.suptitle("Monthly rainfall by station") voegt één titel voor de hele figuur toe en fig.supxlabel(...) en fig.supylabel(...) voegen gedeelde aslabels toe.

Deelgrafieken van verschillende grootte: plt.subplots(1, 2, gridspec_kw={"width_ratios": [2, 1]}) maakt de linkerdeelgrafiek twee keer zo breed als de rechter. fig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) geeft een dictionary van grafiekgebieden terug, hier een brede deelgrafiek axd["top"] boven twee kleinere.

Grafieken van pandas en functies van seaborn voor één grafiekgebied kunnen gekozen deelgrafieken vullen met ax=: wide["North"].plot(ax=axes[0, 0]) of sns.histplot(data=commutes, x="minutes", ax=axes[0, 1]). Zo combineer je grafieken uit alle drie de bibliotheken in één figuur.

Belangrijkste punten

  • Selecteer met een index een grafiekgebied uit de array voordat je tekent.
  • Gedeelde schalen maken vergelijking tussen deelgrafieken mogelijk.
  • Automatische figuurindeling maakt ruimte voor labels.

5.2 Verdeel gegevens met seaborn over deelgrafieken per groep

Verdelen in deelgrafieken per groep tekent dezelfde grafiek eenmaal voor elk niveau van een categorische variabele, elk in een eigen deelgrafiek, met gedeelde assen. Functies van seaborn voor een volledige figuur doen dit met col= (deelgrafieken naast elkaar), row= (deelgrafieken onder elkaar) en col_wrap= (begin na dat aantal kolommen een nieuwe rij).

sns.relplot(data=rain, x="month_num", y="rain_mm", col="station", col_wrap=2, kind="line", height=3, aspect=1.5) tekent drie deelgrafieken, twee in de eerste rij en één in de tweede. Elke deelgrafiek is 3 inch hoog en 3 × 1,5 = 4,5 inch breed, dus de figuur is ongeveer 9 × 6 inch.

row en col samen maken een raster met één deelgrafiek per combinatie van niveaus: twee seizoenen als rijen en drie stations als kolommen geven 2 × 3 = 6 deelgrafieken. col_wrap kan niet worden gecombineerd met row.

Dezelfde argumenten werken voor elk type grafiek: sns.displot(data=commutes, x="minutes", col="mode") geeft één histogram per vervoerswijze en sns.catplot(data=rain, x="station", y="rain_mm", col="season", kind="box") geeft boxplots per seizoen.

Deelgrafieken delen standaard hun x- en y-as, zodat je hoogtes tussen deelgrafieken kunt vergelijken. Als je elke deelgrafiek naar de eigen gegevens laat schalen, zie je details binnen kleine groepen, maar worden vergelijkingen tussen deelgrafieken op het eerste gezicht misleidend. Geef bij relplot en displot facet_kws={"sharey": False} door; catplot accepteert sharey=False rechtstreeks en als je het ook in facet_kws doorgeeft, ontstaat een TypeError.

sns.FacetGrid maakt het raster rechtstreeks en tekent daarna in elke deelgrafiek: g = sns.FacetGrid(commutes, col="mode", height=3); g.map_dataframe(sns.histplot, x="minutes"); g.add_legend(). g.map(plt.scatter, "temp_c", "rentals") geeft de genoemde kolommen als positionele argumenten door aan een grafiekfunctie.

Pas het raster aan met de methoden ervan: g.set_titles("{col_name}") stelt titels voor deelgrafieken in op basis van de niveaunamen, g.set_axis_labels("Month", "Rainfall (mm)") geeft alle assen labels en g.set(ylim=(0, 120)) past een instelling voor grafiekgebieden toe op elke deelgrafiek. Met g.axes_dict["Coast"] of g.axes.flat bereik je afzonderlijke grafiekgebieden en g.figure.suptitle("Rainfall by station", y=1.02) voegt een overkoepelende titel boven de deelgrafieken toe.

hue en col verdelen beide op basis van een variabele. hue legt de groepen over elkaar in één grafiekgebied, waardoor je een paar groepen eenvoudig rechtstreeks kunt vergelijken; col scheidt ze, wat leesbaar blijft als lijnen of punten zouden overlappen of als er veel groepen zijn. Je kunt beide tegelijk gebruiken, bijvoorbeeld col="station", hue="season".

Functies voor een volledige figuur tekenen niet in een bestaand grafiekgebied (relplot, displot en catplot negeren ax= met een waarschuwing, lmplot wijst het af) en accepteren niet het Matplotlib-argument figsize (doorgeven geeft een fout): stel de grootte van het raster in met height en aspect. Om een grafiek met deelgrafieken per groep naast andere grafieken in één Matplotlib-figuur te plaatsen, maak je de deelgrafieken met plt.subplots en functies voor één grafiekgebied.

Belangrijkste punten

  • Deelgrafieken per groep verdelen rijen over grafiekgebieden op basis van hun groep.
  • De afmetingen van deelgrafieken gebruiken hoogte en breedte-hoogteverhouding.
  • Rastermethoden passen de hele weergave aan.
  • Grafieken van functies voor een volledige figuur kunnen geen bestaand grafiekgebied vullen.

5.3 Voeg annotaties en referentielijnen toe

ax.text(x, y, "text") schrijft tekst op een punt in gegevenscoördinaten, dezelfde eenheden als die van de getekende waarden. ha (“left”, “center”, “right”) en va (“top”, “center”, “bottom”) lijnen de tekst uit ten opzichte van dat punt; fontsize en color bepalen de stijl.

Met transform=ax.transAxes zijn posities in plaats daarvan fracties van het grafiekgebied: (0, 0) is de linkerbenedenhoek en (1, 1) de rechterbovenhoek. ax.text(0.02, 0.95, "n = 20", transform=ax.transAxes, va="top") houdt een notitie in de linkerbovenhoek, ongeacht de gegevens en grenzen. Tekst in gegevenscoördinaten verschuift als de grenzen veranderen en kan buiten het grafiekgebied terechtkomen.

ax.annotate("Wettest month", xy=(1, 110), xytext=(2, 115), arrowprops=dict(arrowstyle="->")) schrijft de tekst bij xytext en tekent een pijl naar het punt xy; beide zijn standaard in gegevenscoördinaten. Met textcoords="offset points" wordt xytext een verschuiving vanaf xy in punten, bijvoorbeeld xytext=(10, 10) voor 10 punten naar rechts en omhoog.

Referentielijnen lopen over het hele grafiekgebied: ax.axhline(50, color="gray", linestyle="--", label="Target") tekent een horizontale lijn bij y = 50 en ax.axvline(...) een verticale. ax.axvspan(6, 8, alpha=0.2) arceert het bereik van x = 6 tot x = 8, bijvoorbeeld een vakantieperiode. ax.hlines(y, xmin, xmax) tekent horizontale lijnen over een beperkt bereik.

In het histogram van de 20 reistijden voor woon-werkverkeer is het gemiddelde 650 ÷ 20 = 32,5 minuten en de mediaan 30,5 minuten. ax.axvline(32.5, color="black", linestyle="--"); ax.text(33.5, 6.5, "mean 32.5 min") markeert het gemiddelde, dat rechts van de mediaan ligt omdat enkele lange reistijden het omhoogtrekken.

Staafwaarden: ax.bar_label(bars, fmt="%.0f") voorziet de door ax.bar teruggegeven staven van labels. Bij staven die door pandas of seaborn zijn getekend, worden de staven opgeslagen in ax.containers, dus ax.bar_label(ax.containers[0]) voorziet de eerste reeks van labels. padding=3 plaatst de labels 3 punten van de uiteinden van de staven.

Vormen komen uit matplotlib.patches: ax.add_patch(Rectangle((x, y), width, height, fill=False, edgecolor="red")) omlijnt een gebied in gegevenscoördinaten en Circle en Polygon werken op dezelfde manier.

Met f-strings kun je tekst uit de gegevens berekenen, zodat labels correct blijven als de gegevens veranderen: ax.text(..., f"mean {commutes['minutes'].mean():.1f} min"). Annotaties worden boven op de gegevens getekend; plaats ze in lege gebieden en houd het aantal beperkt, zodat ze aanwijzen wat belangrijk is.

Belangrijkste punten

  • Gegevenscoördinaten verankeren tekst aan metingen.
  • Relatieve grafiekgebiedcoördinaten verankeren tekst aan de deelgrafiek.
  • Een annotatie onderscheidt het doelpunt van de tekstpositie.
  • Bereken veranderende labels uit de gegevens.

5.4 Sla figuren op voor rapporten en het web

fig.savefig("rainfall.png") slaat de figuur op; de bestandsextensie bepaalt het formaat: PNG en JPEG zijn rasterafbeeldingen die uit pixels bestaan, terwijl SVG en PDF vectorafbeeldingen zijn die uit vormen bestaan. format="pdf" stelt het formaat expliciet in.

Rasterafbeeldingen hebben een vast aantal pixels en worden wazig bij vergroting; vectorbestanden blijven op elke grootte scherp en zijn geschikt voor rapporten, drukwerk en documenten. PNG is een goed rasterformaat voor grafieken op het web en in presentaties. JPEG-compressie verliest informatie en maakt dunne lijnen en tekst wazig, dus is een slechte keuze voor grafieken.

Pixelafmetingen = figuurafmetingen in inches × dpi (punten per inch). fig, ax = plt.subplots(figsize=(8, 5)) opgeslagen met dpi=150 geeft 8 × 150 bij 5 × 150 = 1.200 × 750 pixels. Zonder dpi gebruikt savefig de eigen dpi van de figuur, standaard 100, zodat dezelfde figuur 800 × 500 pixels wordt. Voor vectorformaten beïnvloedt dpi alleen ingesloten rasteronderdelen.

Tekstgroottes en lijnbreedtes worden ingesteld in punten (1 punt = 1/72 inch), ten opzichte van de figuurafmetingen in inches. Als je dpi verhoogt, voeg je pixels toe zonder te veranderen hoe groot de tekst ten opzichte van de grafiek lijkt; als je in plaats daarvan figsize vergroot, wordt de tekst relatief kleiner. Kies figsize voor de uiteindelijke weergavegrootte en dpi voor de scherpte.

bbox_inches="tight" snijdt lege marges weg en neemt elementen mee die buiten de figuur uitsteken, zoals een legenda buiten het grafiekgebied; de opgeslagen afbeelding is dan iets kleiner of groter dan figuurafmetingen × dpi. pad_inches=0.1 stelt de marge in die eromheen behouden blijft.

transparent=True slaat zonder achtergrond op, wat past bij presentaties met een gekleurde achtergrond; facecolor="white" dwingt een witte achtergrond af, wat van belang is als anders een donker notebookthema in het bestand terecht zou komen.

plt.savefig slaat de huidige figuur op, dus roep dit aan vóór een blokkerende plt.show(): zodra het venster is gesloten, houdt pyplot die figuur niet meer bij en slaat een latere plt.savefig(...) een nieuwe, lege figuur op. In een Jupyter-notebook laat pyplot de figuur ook aan het eind van de cel los, zodat plt.savefig in een latere cel een lege afbeelding opslaat. Door de figuur in een variabele te bewaren voorkom je beide problemen: fig.savefig(...) werkt nog na plt.show() of in een latere notebookcel.

Resultaten van seaborn sla je op dezelfde manier op: een grafiek van een functie voor één grafiekgebied via de bijbehorende figuur, ax.figure.savefig("box.png", dpi=200), en een raster van een functie voor een volledige figuur met g.savefig("facets.png", dpi=200), dat standaard nauwsluitende begrenzingskaders gebruikt.

for name, grp in rain.groupby("station"):
    grp = grp.sort_values("month_num")
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot(grp["month_num"], grp["rain_mm"], marker="o")
    ax.set(title=name, xlabel="Month", ylabel="Rainfall (mm)")
    fig.savefig(f"rain_{name}.png", dpi=150, bbox_inches="tight")
    plt.close(fig)

. Door elke figuur te sluiten houd je het geheugengebruik laag en voorkom je de waarschuwing over meer dan 20 open figuren.

Belangrijkste punten

  • Sla het figuurobject op dat je hebt gemaakt.
  • Inches maal dpi geeft de afmetingen van een onbesneden rasterafbeelding.
  • Nauwsluitende begrenzingskaders veranderen de grens van de geëxporteerde afbeelding.
  • Vectoruitvoer behoudt vormen.
  • Sluit elke figuur na export in een reeks.

Matplotlib en Seaborn: voorbeelden

5 Walkthroughs

1

Maak grafieken met figuren en grafiekgebieden van Matplotlib

15 stappen
Maak, label en controleer een Matplotlib-figuur.
  1. 1
    IntroductieMaak één grafiek tegelijk

    Een grafiekopdracht heeft een plek nodig om te tekenen. Matplotlib maakt die plek expliciet: een figuur bevat een of meer grafiekgebieden en elk gebied bevat de getekende elementen en labels. Begin met één gebied en gebruik daarna dezelfde objecten om lijnen, punten, staven en nuttige instellingen toe te voegen. Als je de figuur en elk grafiekgebied een naam geeft, kun je gemakkelijker de juiste grafiek aanpassen wanneer een notebook groeit of een figuur meerdere deelgrafieken bevat.

  2. 2
    UitlegHoud het canvas vast

    Een figuur bevat de volledige afbeelding. Een grafiekgebied bevat één grafiek en de coördinaatassen ervan. Maak beide expliciet aan, zodat latere opdrachten een duidelijke bestemming hebben.

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(7, 4))
    

    De breedte en hoogte zijn in inches. De variabele ax verwijst naar het grafiekgebied binnen fig; dit object krijgt de lijn en de bijbehorende labels.

  3. 3
    VoorbeeldTeken in dat gebied

    Voeg een korte temperatuurreeks toe aan het grafiekgebied dat je zojuist hebt gemaakt. Elk paar wordt een punt op de lijn.

    ax.plot([1, 2, 3], [8, 11, 10])
    ax.set(title="Daily temperature",
           xlabel="Day", ylabel="Temperature (°C)")
    

    Als je ax.plot opnieuw aanroept, voeg je nog een lijn toe aan hetzelfde gebied. In een script toont plt.show() de figuur; een notebook toont die normaal onder de cel.

  4. 4
    UitdagingHerstel een titeloproep

    De aanroep ax.title("Daily temperature") geeft een foutmelding “Text object is not callable”. Hoe moet je die aanroep veranderen?

    ---reveal---

    Gebruik ax.set_title("Daily temperature"). Het attribuut title van het grafiekgebied is al een tekstobject; set_title is de methode die het verandert. Het pyplot-equivalent is plt.title(...), maar dat werkt op het grafiekgebied dat op dat moment actief is.

  5. 5
    UitlegHoud de waarnemingen gepaard

    Een lijn verbindt punten in de invoervolgorde. Als de afstandskolom 4, 1, 3 km bevat, loopt de lijn eerst terug en daarna vooruit. Sorteer volledige waarnemingen op afstand en houd elke hoogte naast de oorspronkelijke afstand.

    route = route.sort_values("distance_km")
    ax.plot(route["distance_km"], route["elevation_m"])
    

    Een spreidingsdiagram heeft geen verbindingsvolgorde nodig, omdat elke markering een afzonderlijke waarneming is.

  6. 6
    VoorbeeldGeef elke reeks een legenda-item

    Ook lijnstijlen en markeringsstijlen kunnen reeksen herkenbaar maken, net als kleur. Voeg bij het tekenen een label toe en laat het grafiekgebied daarna een legenda maken.

    ax.plot([1, 2, 3], [4, 8, 7], "o--", label="East")
    ax.plot([1, 2, 3], [6, 7, 9], "s-", label="West")
    ax.legend(title="Site")
    

    Bij een spreidingsdiagram hebben numerieke c-waarden een kleurenbalk nodig om hun kleurverloop uit te leggen. Verlaag alpha als overlappende punten de steekproef aan het zicht onttrekken.

  7. 7
    UitdagingVoorspel een grootteverandering

    Een markering in een spreidingsdiagram gebruikt s=25. Je verandert dit in s=100 met dezelfde markeringsvorm. Hoe verandert de breedte?

    ---reveal---

    De breedte verdubbelt. De oppervlakte is met een factor vier gegroeid en lineaire afmetingen groeien met de vierkantswortel van die factor. Bij een spreidingsdiagram wordt s gemeten in kwadraatpunten; als je dit als een breedte leest, voorspel je ten onrechte een verviervoudiging.

  8. 8
    UitlegPlaats categorieën en waarden

    Staven gebruiken afzonderlijke categorieposities. Begin met één getal per categorie; tekenreeksen worden labels op gelijke afstand in de opgegeven volgorde. Een horizontale grafiek geeft lange namen de ruimte.

    fig, ax = plt.subplots()
    bars = ax.barh(["Bus", "Rail", "Walk"], [48, 37, 25])
    ax.invert_yaxis()
    ax.bar_label(bars)
    

    Door de as om te keren komt de eerste categorie bovenaan. Als je alleen de namen omkeert, koppel je de waarden aan de verkeerde categorieën.

  9. 9
    VoorbeeldBouw een stapel vanaf de basis op

    Stel dat ritten op een werkdag bestaan uit 32 busritten en 18 treinritten. Het tweede staafsegment moet boven op het eerste beginnen.

    ax.bar(["Weekday"], [32], label="Bus")
    ax.bar(["Weekday"], [18], bottom=[32], label="Rail")
    ax.legend()
    

    Het treinsegment heeft hoogte 18 en eindigt bij 50. Als een derde vervoerswijze wordt toegevoegd, is de basislijn daarvan het cumulatieve totaal van de twee al getekende segmenten.

  10. 10
    UitdagingBepaal de plaats van gegroepeerde staven

    Twee staven hebben elk breedte 0,4 en moeten samen worden gecentreerd op categoriepositie 1. Waar moeten hun middelpunten liggen?

    ---reveal---

    Gebruik 0,8 en 1,2, een halve breedte aan weerszijden van het maatstreepje. Hun binnenranden raken elkaar bij 1 en het paar is gecentreerd op de categorie. Met posities 1 en 1,4 krijg je ook een paar naast elkaar, maar verschuift het gezamenlijke middelpunt weg van het maatstreepje van de categorie.

  11. 11
    UitlegOnderscheid posities van labels

    Maatstreepjes markeren coördinaatposities; hun labels zijn de tekst die daar wordt getoond. Geef beide samen op als je numerieke maandposities vervangt door namen.

    ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"])
    ax.set_ylabel("Rainfall (mm)")
    ax.grid(axis="y", alpha=0.3)
    

    Een opmaakfunctie verandert hoe bestaande getallen worden weergegeven. De functie schaalt de gegevens niet opnieuw, dus controleer of percentages zijn opgeslagen als fracties of als getallen van 0 tot 100.

  12. 12
    VoorbeeldKies een betekenisvolle schaal

    Gelijke stappen op een lineaire schaal betekenen gelijke verschillen. Gelijke stappen op een logaritmische schaal betekenen gelijke verhoudingen.

    ax.set_yscale("log")
    

    De waarden 5, 50 en 500 staan op gelijke afstand omdat elke waarde tien keer de vorige is. Nul en negatieve waarden kunnen niet op een gewone logaritmische schaal verschijnen. Stijlen bepalen afzonderlijk het uiterlijk: gebruik een stijlcontext als een ander uiterlijk alleen op één codeblok van toepassing moet zijn.

  13. 13
    UitdagingGeef de bedoelde deelgrafiek een label

    Een figuur met twee deelgrafieken heeft een titel nodig op de eerste, maar plt.title(...) verandert de tweede. Hoe kan de code zich betrouwbaar op de eerste deelgrafiek richten?

    ---reveal---

    Roep axes[0].set_title(...) aan. Het genoemde grafiekgebied is expliciet, zodat de huidige pyplot-toestand de bestemming niet meer bepaalt. Dit is van belang wanneer een figuur meerdere deelgrafieken heeft of een hulpfunctie een ander grafiekgebied maakt of selecteert.

  14. 14
    UitdagingLeg een numerieke kleurenschaal uit

    Een spreidingsdiagram gebruikt puntkleur voor neerslag en markeringsoppervlakte voor het aantal verhuringen. De legenda noemt stations, maar geeft geen numerieke kleurenschaal. Wat heeft de figuur nog nodig?

    ---reveal---

    Voeg een kleurenbalk toe die aan het resultaat van het spreidingsdiagram is gekoppeld en geef die het label “Neerslag (mm)”. De stationslegenda legt de groepen uit, terwijl de kleurenbalk de numerieke kleurtinten verklaart. Als je het teruggegeven spreidingsobject bewaart, kan fig.colorbar dezelfde koppeling gebruiken als de getekende punten.

  15. 15
    SamenvattingControleer het resultaat dat je hebt gemaakt

    Een grafiek heeft een canvas, een grafiekgebied en grafische objecten die aan dat gebied zijn gekoppeld. Controleer of elke reeks de bedoelde waarnemingsparen behoudt, of de labels variabelen en eenheden aangeven en of numerieke kleurkoppelingen een legenda hebben. Als een verandering de verkeerde plek beïnvloedt, controleer dan welk grafiekgebied de methodeaanroep heeft ontvangen. Als een vorm er verkeerd uitziet, controleer dan de volgorde en coördinaten van de gegevens voordat je de stijl verandert.

2

Maak grafieken rechtstreeks vanuit pandas

9 stappen
Bereid de juiste waarden en structuur voor voordat je tekent.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieLaat de tabel de grafiek voeden
  2. 2
    UitlegGebruik de labels van de tabel
  3. 3
    VoorbeeldKies numerieke kolommen
  4. 4
    UitdagingLijn lijnen en staven uit
  5. 5
    UitlegVat samen voordat je tekent
  6. 6
    VoorbeeldKies een structuur voor de volgende bibliotheek
  7. 7
    UitdagingHerstel een herhaald paar bij pivoteren
  8. 8
    UitdagingVat samen en herstructureer
  9. 9
    SamenvattingControleer het resultaat dat je hebt gemaakt
3

Maak statistische grafieken met seaborn

12 stappen
Verbind koppelingen en statistische standaardinstellingen van seaborn met de grafiek.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieLees wat de functie berekent
  2. 2
    UitlegKoppel variabelen aan kenmerken
  3. 3
    VoorbeeldKies wie de indeling beheert
  4. 4
    UitdagingStem de functie af op de indeling
  5. 5
    UitlegLees de schatter van de lijn
  6. 6
    VoorbeeldBehoud elk traject
  7. 7
    UitdagingInterpreteer een smalle band
  8. 8
    UitlegTel rijen of vat waarden samen
  9. 9
    VoorbeeldToon de waarnemingen
  10. 10
    UitdagingKies de samenvatting
  11. 11
    UitdagingVerklaar de veranderende staven
  12. 12
    SamenvattingControleer het resultaat dat je hebt gemaakt
4

Visualiseer verdelingen en waardenrasters

12 stappen
Werk van waarnemingen naar verdelingen en kleurenrasters.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieLees samengevatte gegevens zorgvuldig
  2. 2
    UitlegTel een klasse correct
  3. 3
    VoorbeeldZet een aantal om in dichtheid
  4. 4
    UitdagingVergelijk klassen met ongelijke breedte
  5. 5
    UitlegBepaal de uitschietergrenzen vanuit de box
  6. 6
    VoorbeeldBepaal het waargenomen uiteinde van de snor
  7. 7
    UitdagingKijk achter een identieke box
  8. 8
    UitlegBegin met het numerieke raster
  9. 9
    VoorbeeldLeg de betekenis van kleuren vast
  10. 10
    UitdagingOnderzoek overeenkomende kleurtinten
  11. 11
    UitdagingBekijk twee samenvattingen samen
  12. 12
    SamenvattingControleer het resultaat dat je hebt gemaakt
5

Maak figuren met meerdere deelgrafieken, voeg annotaties toe en exporteer ze

16 stappen
Rangschik deelgrafieken, veranker annotaties en exporteer het resultaat.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBereid een figuur voor om te delen
  2. 2
    UitlegMaak afzonderlijk aanspreekbare deelgrafieken
  3. 3
    VoorbeeldVul het raster met groepen
  4. 4
    UitdagingVergelijk schalen eerlijk
  5. 5
    UitlegLaat seaborn de tabel verdelen
  6. 6
    VoorbeeldPas het raster als geheel aan
  7. 7
    UitdagingWijzig het delen met het juiste argument
  8. 8
    UitlegKies waaraan je de tekst verankert
  9. 9
    VoorbeeldKoppel een label aan een piek
  10. 10
    UitdagingHoud een label na filteren correct
  11. 11
    UitlegKies afmetingen vóór pixels
  12. 12
    VoorbeeldSla de bewaarde figuur op
  13. 13
    UitdagingCombineer keuzes voor indeling en export
  14. 14
    UitdagingRond een reproduceerbare reeks exports af
  15. 15
    TipControleer het opgeslagen resultaat
  16. 16
    SamenvattingControleer het resultaat dat je hebt gemaakt

Matplotlib en Seaborn: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Pas grafiekkeuzes toe op nieuwe gegevens10 Oefenvragen

Vraag 1 van 10

Welk coördinatenstelsel houdt een notitie bij de linkerbovenhoek van een deelgrafiek als de gegevensgrenzen veranderen?
  1. De eenheden van de x-variabele
  2. De eenheden van de y-variabele
  3. Relatieve grafiekgebiedcoördinaten
  4. Gegevenscoördinaten
Toon antwoordVerberg antwoord
Antwoord: C
Relatieve grafiekgebiedcoördinaten beschrijven fracties van het grafiekgebied, dus een positie bij (0, 1) blijft bij de linkerbovenhoek. Gegevenscoördinaten beschrijven meetwaarden en verschuiven daarom op het scherm als de grenzen veranderen. Dat is juist handig om een bepaalde waarneming van een label te voorzien.

Vraag 2 van 10

Wat geeft 64 aan in ax.scatter(x, y, s=64)?
  1. Markeringsoppervlakte in kwadraatpunten
  2. Markeringsbreedte in punten
  3. Markeringsdekking als percentage
  4. Markeringsstraal in punten
Toon antwoordVerberg antwoord
Antwoord: A
Het argument s van een spreidingsdiagram bepaalt de markeringsoppervlakte in kwadraatpunten. Het is geen breedte of straal: als de oppervlakte met een factor vier verandert, veranderen de lineaire afmetingen van een markering met een factor twee, bij dezelfde markeringsvorm.

Vraag 3 van 10

Welke klasse bevat de waarde 5 bij grenzen [0, 5, 10, 15]?
  1. Geen klasse, omdat het een grens is
  2. Beide klassen die aan 5 grenzen
  3. De klasse van 0 tot onder 5
  4. De klasse van 5 tot onder 10
Toon antwoordVerberg antwoord
Antwoord: D
Klassen vóór de laatste bevatten hun linkergrens en sluiten hun rechtergrens uit, dus 5 valt in de klasse die bij 5 begint. Als je de waarde in beide aangrenzende klassen telt, tel je één waarneming dubbel. Alleen de laatste klasse bevat ook de uiterste rechtergrens.

Vraag 4 van 10

Een box heeft Q1 = 12 en Q3 = 20. De waargenomen waarden boven Q3 zijn 24, 30 en 35. Waar eindigt de bovenste snor standaard?
  1. 24
  2. 30
  3. 32
  4. 35
Toon antwoordVerberg antwoord
Antwoord: B
De IQR is 8, dus de bovenste uitschietergrens is 20 + 1,5 × 8 = 32. De grootste waargenomen waarde binnen die grens is 30, en daar eindigt de snor. De berekende grens bij 32 is een afkapwaarde, geen waarde die in de gegevens moet voorkomen.

Vraag 5 van 10

Een grafiek slaat aandelen op als fracties en heeft een streefwaarde van 75%. Welke combinatie plaatst de streefwaarde correct en geeft de y-as labels in procenten?
  1. ax.axhline(0.75) en PercentFormatter(xmax=100)
  2. ax.axhline(0.75) en PercentFormatter(xmax=1)
  3. ax.axhline(75) en PercentFormatter(xmax=100)
  4. ax.axhline(75) en PercentFormatter(xmax=1)
Toon antwoordVerberg antwoord
Antwoord: B
De opgeslagen streefwaarde moet dezelfde fractieschaal gebruiken als de gegevens, dus teken de lijn bij 0,75. Een percentageopmaakfunctie met xmax=1 geeft die coördinaat dan het label 75%. Als je de lijn bij 75 plaatst, verandert de numerieke positie; opmaak kan dat verschil in coördinaten niet corrigeren.

Vraag 6 van 10

Een routetabel heeft afstanden [4, 1, 3] km en bijbehorende hoogtes [90, 40, 75] m. Welke volgorde moet een vooruitlopende lijn gebruiken?
  1. (1, 40), (3, 75), (4, 90)
  2. (1, 90), (3, 40), (4, 75)
  3. (1, 40), (4, 90), (3, 75)
  4. (4, 90), (1, 40), (3, 75)
Toon antwoordVerberg antwoord
Antwoord: A
Sorteer de waarnemingen op afstand en houd elke hoogte gekoppeld aan de oorspronkelijke afstand. Dit geeft (1, 40), (3, 75) en (4, 90). Als je alleen de afstandslijst sorteert, koppel je de verkeerde hoogtes aan de nieuwe posities.

Vraag 7 van 10

Metingen zijn gedaan in de jaren 2017, 2018 en 2022. Een seaborn-grafiek voor categorische gegevens plaatst ze op gelijke afstand. Wat behoudt de werkelijke tussenruimtes?
  1. sharey=True
  2. errorbar=None
  3. dodge=True
  4. native_scale=True
Toon antwoordVerberg antwoord
Antwoord: D
De oorspronkelijke schaal behoudt de numerieke coördinaten, zodat het gat van vier jaar van 2018 tot 2022 breder is dan het gat van één jaar ervoor. Groepen naast elkaar plaatsen scheidt kleurgroepen binnen een categorie; het vervangt categorische posities niet door de oorspronkelijke numerieke schaal.

Vraag 8 van 10

Een grafiek met deelgrafieken per groep heeft twee rijniveaus en vier kolomniveaus. Hoeveel deelgrafieken maakt de functie?
  1. 8
  2. 6
  3. 4
  4. 2
Toon antwoordVerberg antwoord
Antwoord: A
Een raster met rijen en kolommen heeft één deelgrafiek voor elke combinatie van niveaus, dus 2 × 4 = 8 deelgrafieken. Als je de aantallen niveaus optelt, krijg je zes, maar dan mis je combinaties: elk van de twee rijen heeft alle vier de kolommen nodig.

Vraag 9 van 10

Een regio heeft 9 treinritten en 3 loopritten; een andere heeft 12 treinritten en 12 loopritten. Je wilt gestapelde staven van gelijke hoogte om de verdeling van vervoerswijzen te vergelijken. Wat moeten de treindelen zijn?
  1. 0,30 en 0,40
  2. 0,43 en 0,57
  3. 0,75 en 0,50
  4. 9,00 en 12,00
Toon antwoordVerberg antwoord
Antwoord: C
Normaliseer binnen elke regio: het eerste treinaandeel is 9 van de 12, oftewel 0,75, en het tweede is 12 van de 24, oftewel 0,50. Als je door het gezamenlijke totaal van de steekproeven deelt, vergelijk je bijdragen aan alle ritten. De staven tellen dan niet meer elk op tot één.

Vraag 10 van 10

Een rapport heeft een PNG van 900 × 600 pixels nodig, met een legenda buiten het grafiekgebied die volledig zichtbaar is. Het geplande canvas is 6 × 4 inch. Welk plan geeft de beste controle over zowel de afmetingen als het afsnijden?
  1. Gebruik 100 dpi, reserveer ruimte voor de legenda binnen het canvas en sla op zonder nauwsluitend bijsnijden.
  2. Gebruik 150 dpi, reserveer ruimte voor de legenda binnen het canvas en sla op zonder nauwsluitend bijsnijden.
  3. Gebruik 150 dpi, zet de legenda buiten het canvas en sla op zonder nauwsluitend bijsnijden.
  4. Gebruik 150 dpi, zet de legenda buiten het canvas en dwing nauwsluitend bijsnijden af om de canvasgrootte te behouden.
Toon antwoordVerberg antwoord
Antwoord: B
Bij 150 dpi geeft een canvas van 6 × 4 inch 900 × 600 pixels. Reserveer een deel van dat canvas voor de legenda, buiten het grafiekgebied maar binnen de figuur, zodat de legenda past zonder te worden afgesneden. Nauwsluitende grenzen kunnen een legenda buiten het canvas opnemen, maar kunnen ook de uiteindelijke pixelafmetingen veranderen.
Set 2: Lees grafieken en controleer de basis10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat geeft df.plot(y="depth_mm") met Matplotlib als standaardbibliotheek terug wanneer het één deelgrafiek tekent?
  1. Een seaborn-FacetGrid
  2. Een Matplotlib-grafiekgebied
  3. Een pandas-Series
  4. Een Matplotlib-figuur
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Hoe selecteer je bij plt.subplots(2, 3) de deelgrafiek rechtsonder?
  1. axes[2, 3]
  2. axes[1, 3]
  3. axes[2, 1]
  4. axes[1, 2]
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Je wilt het aantal waarnemingen in elke uitrustingscategorie weten. Welke seaborn-grafiek geeft dit rechtstreeks?
  1. Een frequentiestaafdiagram van categorieën
  2. Een puntdiagram van gemiddelden
  3. Een staafdiagram van gemiddelden
  4. Een boxplot van metingen
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

De waarden op een y-as zijn aandelen als fracties. Welke instelling van de opmaakfunctie geeft 0,32 weer als “32%”?
  1. PercentFormatter(xmax=0.32)
  2. PercentFormatter(xmax=32)
  3. PercentFormatter(xmax=1)
  4. PercentFormatter(xmax=100)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat beschrijft de standaard ingekleurde band rond een seaborn-lijn van gemiddelden?
  1. Het volledige bereik van de geregistreerde waarden
  2. De onzekerheid van de geschatte gemiddelden
  3. De middelste helft van alle waarnemingen
  4. Eén standaardafwijking van alle waarnemingen
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Sensormetingen komen herhaaldelijk voor bij elk paar van station en uur. Welke tabelbewerking geeft één gemiddelde per paar in een brede tabel met stations en uren?
  1. pivot_table(..., aggfunc="mean")
  2. value_counts() op stationsnamen
  3. melt(...) met stationscodes
  4. pivot(...) zonder aggregatie
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Je wilt afzonderlijke boxplots per categorie met onafhankelijke y-schalen. Wat is de juiste seaborn-configuratie voor een volledige figuur?
  1. catplot(kind="box", col="site", facet_kws={"sharey": False})
  2. boxplot(col="site", sharey=False)
  3. catplot(kind="box", row="site", col_wrap=2)
  4. catplot(kind="box", col="site", sharey=False)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een puntenstrookdiagram gebruikt kleur voor de dienst, maar beide diensten staan op dezelfde positie binnen elke categorie. Wat zet de groepen naast elkaar?
  1. Stel native_scale=True in.
  2. Stel jitter=False in.
  3. Stel dodge=True in.
  4. Stel errorbar=None in.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een draaitabel met gemiddelden heeft drijvendekommawaarden zoals 26,0. Welk hittekaartformaat toont labels als gehele getallen zonder het datatype te veranderen?
  1. fmt=".2f"
  2. fmt="d"
  3. fmt=".0f"
  4. fmt=".0g"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Metingen zijn 8, 12, 16 en 24 minuten. Een filter verwijdert metingen van ten minste 20 minuten. Een lijn voor het gemiddelde moet bij de overgebleven rijen passen en een notitie over de steekproefgrootte moet in de linkerbovenhoek van de deelgrafiek blijven als de grenzen veranderen. Wat moet de aangepaste figuur gebruiken?
  1. Een lijn bij 15 en een notitie “n = 3” in relatieve grafiekgebiedcoördinaten.
  2. Een lijn bij 12 en een notitie “n = 3” in gegevenscoördinaten.
  3. Een lijn bij 12 en een notitie “n = 4” in relatieve grafiekgebiedcoördinaten.
  4. Een lijn bij 12 en een notitie “n = 3” in relatieve grafiekgebiedcoördinaten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Verbind tabellen, samenvattingen en grafieken10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een standaardlijndiagram van seaborn heeft herhaalde metingen bij dezelfde x. Wat toont de lijn bij die x?
  1. De som van de y-waarden
  2. De mediaan van de y-waarden
  3. De eerste vastgelegde y-waarde
  4. Het gemiddelde van de y-waarden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat doet een tweede aanroep van ax.plot(...) met een bestaand grafiekgebied?
  1. Die vervangt de oude lijn
  2. Die maakt een tweede grafiekgebied
  3. Die voegt een andere reeks toe
  4. Die verwijdert de aslabels
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een notebook maakt fig in één cel en bewaart die. Een latere cel moet precies die grafiek opslaan nadat pyplot die heeft losgelaten. Welke aanroep is betrouwbaar?
  1. fig.savefig("chart.png")
  2. plt.savefig("chart.png")
  3. plt.show("chart.png")
  4. plt.figure().savefig("chart.png")
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een gestapeld diagram heeft een basissegment van 28 en een tweede segment van 17. Wat zijn de onder- en bovengrens van het tweede segment?
  1. Ondergrens 0; bovengrens 17
  2. Ondergrens 28; bovengrens 45
  3. Ondergrens 28; bovengrens 17
  4. Ondergrens 17; bovengrens 45
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een hulpfunctie roept plt.title("Depth") aan nadat die een tweede figuur heeft gemaakt. De titel moet bij het grafiekgebied van de eerste figuur horen, opgeslagen als first_ax. Hoe moet je de titel instellen?
  1. first_ax.title("Depth")
  2. first_ax.set_title("Depth")
  3. plt.figure().suptitle("Depth")
  4. plt.title("Depth") na de hulpfunctie
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een bezorgtijd ligt buiten de bovenste uitschietergrens van een boxplot. Wat moet je doen voordat je de waarde verwijdert?
  1. Verwijder de waarde omdat de grens ongeldige gegevens markeert.
  2. Vervang de waarde door het uiteinde van de bovenste snor.
  3. Onderzoek of de vastgelegde tijd geldig is.
  4. Behoud alleen waarden binnen de interkwartielafstand.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een pijl moet naar (8, 42) wijzen, met tekst 12 punten erboven. Wat moeten xy en xytext zijn bij textcoords="offset points"?
  1. xy=(8, 42), xytext=(0, 12)
  2. xy=(8, 42), xytext=(8, 54)
  3. xy=(8, 54), xytext=(0, 12)
  4. xy=(0, 12), xytext=(8, 42)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Twee groepen hebben 40 en 200 waarnemingen. Een klasse van vijf minuten bevat 10 waarnemingen uit de eerste groep en 20 uit de tweede. De histogrammen moeten elk oppervlakte één hebben. Welke dichtheidshoogtes moet die klasse hebben en welke normalisatie-instelling is nodig?
  1. 0,25 en 0,10 per minuut; common_norm=False.
  2. 0,05 en 0,02 per minuut; common_norm=True.
  3. 0,01 en 0,02 per minuut; common_norm=True.
  4. 0,05 en 0,02 per minuut; common_norm=False.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een Series met de jaren 2018, 2020 en 2024 als index wordt als pandas-staven getekend. Een lijn die deze numerieke jaren gebruikt, wordt aan hetzelfde grafiekgebied toegevoegd. Hoe kunnen beide reeksen samenvallen met behoud van de jaarlabels?
  1. Converteer alleen de staafhoogtes vóór het tekenen naar een numerieke array.
  2. Teken beide op posities 0, 1, 2 en geef die maatstreepjes jaarlabels.
  3. Sorteer beide reeksen op jaar en behoud hun bestaande coördinaten.
  4. Stel identieke y-grenzen in en behoud hun bestaande coördinaten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een PNG van 6 × 3 inch bij 100 dpi gebruikt labels van 12 punten die ten opzichte van de grafiek de juiste grootte lijken te hebben. Je hebt 1.200 × 600 pixels nodig en houdt de lettergrootte op 12 punten. Welke figuurgrootte en resolutie behouden de verhoudingen van de labels?
  1. 6 × 3 inch bij 200 dpi.
  2. 12 × 6 inch bij 100 dpi.
  3. 6 × 3 inch bij 100 dpi.
  4. 12 × 6 inch bij 200 dpi.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Onderzoek grafiekinstellingen en vergelijkingen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een figuur heeft drie deelgrafieken. Hoeveel grafiekgebieden bevat de figuur?
  1. Drie
  2. Eén
  3. Zes
  4. Twee
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een tabel bevat één rij per rit en een kolom mode. Wat levert het aantal ritten per vervoerswijze op?
  1. trips["mode"].sort_values()
  2. trips["mode"].unique()
  3. trips["mode"].value_counts()
  4. trips["mode"].drop_duplicates()
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een lange tabel heeft height_cm, mass_kg en species. Hoe kan een spreidingsdiagram soorten herkenbaar maken met zowel kleur als markeringsvorm?
  1. Koppel soorten aan grootte en y.
  2. Koppel soorten aan kleur en grootte.
  3. Koppel soorten aan x en stijl.
  4. Koppel soorten aan kleur en stijl.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een lijndiagram van maanden gebruikt tekstnamen die voorkomen als “May”, “Mar”, “Apr”. Je hebt kalendervolgorde en één lijn per locatie nodig. Welke verandering is geschikt?
  1. Geef de maandvolgorde door aan lineplot en koppel locatie aan kleur.
  2. Maak maand geordend categorisch en koppel locatie aan kleur.
  3. Sorteer maandnamen alfabetisch en koppel locatie aan kleur.
  4. Koppel maand aan kleur en sorteer locatienamen alfabetisch.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Twee reeksen hebben staafbreedte 0,3 en moeten naast elkaar staan, samen gecentreerd op x = 2. Waar moeten hun middelpunten liggen?
  1. 1,7 en 2,3
  2. 2,0 en 2,3
  3. 1,85 en 2,15
  4. 1,85 en 2,3
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een deelgrafiek per groep heeft hoogte 4 inch en breedte-hoogteverhouding 1,25. Hoe breed is die deelgrafiek?
  1. 5 inch
  2. 3,2 inch
  3. 4 inch
  4. 1,25 inch
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Twee steekproeven hebben dezelfde kwartielen en uiteinden van de snorren, maar verschillende clusters van waarnemingen. Welke weergave kan het verschil zichtbaar maken en waarom?
  1. Verberg uitschieters om de ontbrekende clusters te tonen.
  2. Vergroot de boxbreedte om de clusters te coderen.
  3. Leg de y-grenzen vast om de boxen verschillend te maken.
  4. Teken puntenstrookdiagrammen eroverheen om afzonderlijke waarden te tonen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een gerangschikte horizontale grafiek moet van boven naar beneden de waarden 52, 31 en 19 tonen. De oorspronkelijke naam-waardeparen zijn A–31, B–19, C–52. Met welke voorbereiding en asinstelling bereik je dit?
  1. Sorteer paren oplopend, teken ze en keer dan de y-as om.
  2. Sorteer paren aflopend, teken ze en keer dan de y-as om.
  3. Sorteer paren aflopend, teken ze en keer dan de x-as om.
  4. Sorteer namen aflopend, houd waarden vast en teken ze dan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Twee aangrenzende klassen hebben breedtes 2 en 4 en bevatten elk 10 waarnemingen in een steekproef van 50. Wat zijn hun hoogtes en oppervlaktes bij dichtheidsschaling?
  1. Hoogtes 0,05 en 0,10; oppervlaktes 0,10 en 0,40
  2. Hoogtes 0,10 en 0,05; oppervlaktes 0,20 en 0,20
  3. Hoogtes 0,10 en 0,10; oppervlaktes 0,20 en 0,40
  4. Hoogtes 0,20 en 0,20; oppervlaktes 0,40 en 0,80
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een rapport heeft trends van drie locaties nodig in een raster van 2 × 2, vergelijkbaar in millimeters. Rijen komen in gemengde maandvolgorde binnen. Welke opbouw voorkomt teruglopende lijnen, misleidende deelgrafiekhoogtes en een zichtbare lege deelgrafiek?
  1. Sorteer elke locatie op maand, deel y-grenzen en verberg het overgebleven grafiekgebied.
  2. Sorteer elke locatie op maand, deel y-grenzen en herhaal een locatie in het overgebleven grafiekgebied.
  3. Sorteer elke locatie op maand, schaal elke y-as en verberg het overgebleven grafiekgebied.
  4. Sorteer elke locatie op diepte, deel y-grenzen en verberg het overgebleven grafiekgebied.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Los problemen met grafieken en export op10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welk type seaborn-functie kan in een gekozen bestaand Matplotlib-grafiekgebied tekenen?
  1. Een functie die een PairGrid maakt
  2. Een functie voor één grafiekgebied
  3. Een functie voor een volledige figuur
  4. Een functie die een FacetGrid maakt
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Op een logaritmische y-as beweegt een punt van 3 naar 30. Welke verplaatsing heeft dezelfde verticale afstand?
  1. 30 naar 300
  2. 30 naar 57
  3. 30 naar 130
  4. 30 naar 60
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een dieptekolom bevat tekenreeksen zoals “15 mm” en pandas slaat die over bij het tekenen. Wat is een bruikbare oplossing?
  1. Geef de grafiek een label met de tekst van de eenheid.
  2. Vergroot de figuurbreedte en draai de labels bij de maatstreepjes.
  3. Verander het grafiektype van een lijn naar horizontale staven.
  4. Verwijder de tekst van de eenheid en converteer waarden naar getallen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een steekproef van 40 waarden heeft 12 waarnemingen in een klasse van 6 minuten breed. Wat is de dichtheidshoogte van die klasse?
  1. 0,15 per minuut
  2. 2,00 per minuut
  3. 0,05 per minuut
  4. 0,30 per minuut
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een aangepaste rechte lijn stijgt in het geheel, maar de punten stijgen eerst sterk en vlakken daarna af. Waar moet je bij de volgende controle op letten?
  1. Verberg de punten en beoordeel de aanpassing alleen op de helling.
  2. Interpreteer de betrouwbaarheidsband alsof die alle mogelijke waarnemingen bevat.
  3. Beschouw de rechte lijn als bewijs voor overal een constante veranderingssnelheid.
  4. Onderzoek de kromming en vergelijk de rechte met een kromme aanpassing.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een correlatiehittekaart heeft een coëfficiënt dicht bij nul, maar het bijbehorende spreidingsdiagram toont een duidelijke U-vorm. Hoe moet je dit paar interpreteren?
  1. Er is geen verband omdat de coëfficiënt dicht bij nul ligt.
  2. Er is een kromlijnig verband met zwakke lineaire samenhang.
  3. Er is overal een sterk positief lineair verband.
  4. Er is overal een sterk negatief lineair verband.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Drie stationsgrafieken gebruiken afzonderlijke automatische y-grenzen. Een verandering van 4 mm lijkt even hoog als een verandering van 40 mm. Hoe moet je de figuur opnieuw opbouwen om groottes direct te vergelijken?
  1. Gebruik gedeelde y-grenzen en behoud de werkelijke waarden van elk station.
  2. Behoud afzonderlijke grenzen en geef elke deelgrafiek dezelfde hoogte.
  3. Normaliseer elk station naar het eigen maximum en deel de y-grenzen.
  4. Behoud afzonderlijke grenzen en voeg dezelfde titel aan elke deelgrafiek toe.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Voor twee locaties zijn vergelijkbare hittekaarten per tijdvak nodig. Locatie A heeft voor één tijdvak twee tellingen, 20 en 40; locatie B heeft 70 voor dat tijdvak. Elke cel moet een gemiddelde als geheel getal tonen. Welke voorbereiding en weergave-instellingen houden zowel waarden als kleurtinten vergelijkbaar?
  1. Aggregeer met de som, gebruik fmt=".0f" en maak kleurenschaal en grenzen gelijk.
  2. Aggregeer met het gemiddelde, gebruik fmt="d" en maak kleurenschaal en grenzen gelijk.
  3. Aggregeer met het gemiddelde, gebruik fmt=".0f" en maak kleurenschaal en grenzen gelijk.
  4. Aggregeer met het gemiddelde, gebruik fmt=".0f" en gebruik afzonderlijke automatische grenzen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een tabel registreert elk apparaat op meerdere tijdstippen. Je hebt de afzonderlijke trajecten van apparaten nodig, gekleurd naar model, zonder een apart legenda-item voor elk apparaat. Hoe moet het lijndiagram worden ingesteld?
  1. Gebruik model voor kleur, laat units weg en behoud het gemiddelde als schatter.
  2. Gebruik apparaat voor units, model voor kleur en estimator=None.
  3. Gebruik apparaat voor kleur, model voor units en het gemiddelde als schatter.
  4. Gebruik apparaat voor stijl, model voor kleur en het gemiddelde als schatter.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een spreidingsdiagram moet steekproefaantallen aan markeringsoppervlakte koppelen en neerslag aan kleur. Bij aantallen 20 en 80 moet de tweede markering twee keer zo breed zijn als de eerste, en lezers hebben een numerieke kleurschaal voor neerslag nodig. Welke opzet past hierbij?
  1. Gebruik s=counts, c=rain_mm en een kleurenbalk van het spreidingsresultaat.
  2. Gebruik s=counts**2, c=rain_mm en een kleurenbalk van het spreidingsresultaat.
  3. Gebruik s=rain_mm, c=counts en een kleurenbalk van het spreidingsresultaat.
  4. Gebruik s=counts, c=rain_mm en een legenda van de twee steekproefaantallen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

78 Kernbegrippen, elk met een definitie

A

aggregatie
Aggregatie combineert meerdere rijen tot een samenvatting, zoals een gemiddelde, som of aantal, voor elke gedefinieerde groep.
Aggregatie per station zet rijen met dagelijkse neerslag om in één gemiddelde neerslagwaarde per station.
annotatie
Een annotatie is tekst die aan een doellocatie is gekoppeld, eventueel met een pijl en een afzonderlijk geplaatst label.
Een annotatie kan een piek benoemen en de tekst ernaast plaatsen om het punt zichtbaar te houden.
array van grafiekgebieden
Een array van grafiekgebieden is een NumPy-array van grafiekgebiedobjecten die wordt teruggegeven wanneer Matplotlib meerdere deelgrafieken maakt.
Selecteer met een index een grafiekgebied uit de array voordat je tekent; de array zelf heeft geen grafiekmethode.
as
Een as is de x- of y-coördinaatas van een grafiekgebied, inclusief maatstreepjes, bijbehorende labels en schaal.
De verticale as van een temperatuurgrafiek kan labels bij maatstreepjes in graden Celsius tonen.
automatische figuurindeling
Automatische figuurindeling is een indelingssysteem van Matplotlib dat de ruimte tussen deelgrafieken aanpast om plaats te maken voor labels en decoraties.
Automatische figuurindeling helpt voorkomen dat lange y-aslabels tegen de aangrenzende deelgrafiek komen.

B

bandbreedte
De bandbreedte bepaalt de afvlakking van een kerndichtheidsschatting; een grotere bandbreedte geeft een vloeiendere kromme.
Een grotere bandbreedte kan twee kleine hobbels samenvoegen die bij een gedetailleerdere kromme zichtbaar waren.
basislijn
Een basislijn is de beginwaarde vanwaar een staaf loopt; gewone Matplotlib-staven beginnen bij nul, tenzij je dat verandert.
Het tweede segment van een stapel gebruikt de waarde van het eerste segment als basislijn.
betrouwbaarheidsinterval
Een betrouwbaarheidsinterval drukt onzekerheid over een geschatte grootheid uit met een methode die is ontworpen voor herhaalde steekproeven.
De standaardband rond een lijn in seaborn is een 95%-betrouwbaarheidsinterval voor elk geschat gemiddelde.
breed formaat
Breed formaat slaat afzonderlijke reeksen op in afzonderlijke kolommen, met rij-identificatiecodes die door die reeksen worden gedeeld.
Een brede tabel met één kolom per station levert in pandas één lijn per station op.
breedte-hoogteverhouding
De breedte-hoogteverhouding van een deelgrafiek per groep is de breedte gedeeld door de hoogte; hoogte maal verhouding geeft de breedte van de deelgrafiek.
Een deelgrafiek per groep met hoogte 3 inch en breedte-hoogteverhouding 1,5 heeft een breedte van 4,5 inch.

C

correlatiematrix
Een correlatiematrix is een symmetrische tabel van coëfficiënten voor paarsgewijze lineaire samenhang, met gedefinieerde waarden van −1 tot 1.
Bekijk naast een correlatiematrix ook spreidingsdiagrammen, omdat sterke kromlijnige patronen een lage correlatie kunnen hebben.

D

DatetimeIndex
Een DatetimeIndex is een pandas-index van tijdstempels die grafiekmethoden kunnen gebruiken voor een horizontale as op basis van datums.
Resampling van een DatetimeIndex naar maandbegin kan een grafiek met maandgemiddelden opleveren.
deelgrafiek per groep
Een deelgrafiek per groep herhaalt een grafiek voor één deelverzameling die met een groeperingsvariabele is geselecteerd.
Een deelgrafiek per vervoerswijze vergelijkt dezelfde verdeling van reistijden voor woon-werkverkeer tussen groepen.
divergerende kleurenschaal
Een divergerende kleurenschaal gebruikt verschillende kleurrichtingen aan weerszijden van een betekenisvol midden, zoals nul.
Een divergerende kleurenschaal onderscheidt negatieve correlaties van positieve rond een neutraal midden.
doorloop van deelgrafieken naar volgende rijen
Doorloop van deelgrafieken naar volgende rijen beperkt het aantal kolommen met deelgrafieken per groep en zet de overige deelgrafieken op volgende rijen.
Als deelgrafieken na drie kolommen doorlopen, komen zeven stationsgrafieken in rijen van drie, drie en één.
dpi
Dpi betekent punten per inch; bij een rasterexport zet dpi de fysieke afmetingen van een figuur om in pixelafmetingen.
Een figuur van 6 inch breed die met 200 dpi wordt opgeslagen, heeft vóór nauwsluitend bijsnijden een breedte van 1.200 pixels.

E

empirische cumulatieve verdelingsfunctie
Een empirische cumulatieve verdelingsfunctie geeft het aandeel waargenomen waarden op of onder elke mogelijke drempel.
Een ECDF-waarde van 0,8 bij 40 minuten betekent dat 80% van de geregistreerde tijden hoogstens 40 minuten is.

F

FacetGrid
Een FacetGrid is een seaborn-object dat een figuur en deelgrafieken per groep bevat, met methoden om te tekenen en labels toe te voegen.
Een FacetGrid kan een histogramfunctie afzonderlijk toepassen op de waarnemingen van elk station.
figuur
Een figuur is het volledige canvas van Matplotlib, met grafiekgebieden en elementen voor de hele figuur, zoals een overkoepelende titel.
Een figuur kan een lijndiagram van neerslag naast een histogram van dagtemperaturen bevatten.
frequentiestaafdiagram
Een frequentiestaafdiagram toont het aantal rijen in elke categorie zonder dat een afzonderlijke numerieke responsvariabele nodig is.
Een frequentiestaafdiagram van vervoerswijzen toont hoeveel geregistreerde ritten met elk type vervoer zijn gemaakt.
functie voor één grafiekgebied
Een functie voor één grafiekgebied tekent in één Matplotlib-grafiekgebied, accepteert een bestaand grafiekgebied en geeft het gebied terug waarin is getekend.
Een seaborn-histogram van een functie voor één grafiekgebied kan de rechterdeelgrafiek van een aangepaste Matplotlib-figuur vullen.
functie voor een volledige figuur
Een functie voor een volledige figuur maakt een eigen figuur of raster en kan de gegevens in deelgrafieken verdelen via koppelingen aan rijen en kolommen.
Een functie voor een volledige figuur kan voor een grafiek van verbanden elk station een deelgrafiek met dezelfde asschalen geven.

G

gedeelde as
Een gedeelde as koppelt coördinaatschalen tussen meerdere deelgrafieken, zodat overeenkomstige posities dezelfde waarden voorstellen.
Een gedeelde y-as zorgt ervoor dat een hoogte van 80 mm in elke stationsgrafiek op dezelfde positie staat.
gegevenscoördinaten
Gegevenscoördinaten bepalen de plaats van een grafiekelement met de eenheden van de getekende variabelen, zodat de positie op het scherm afhangt van de asgrenzen.
Een annotatie bij 20 minuten en 12 waarnemingen verschuift op het scherm als de asgrenzen veranderen.
gegroepeerd staafdiagram
Een gegroepeerd staafdiagram plaatst afzonderlijke reeksen naast elkaar rond elke categoriepositie, zodat hun waarden kunnen worden vergeleken.
Door de reeksen staven van twee stations rond elke maand te verschuiven, voorkom je dat de twee reeksen overlappen.
gestapeld staafdiagram
Een gestapeld staafdiagram plaatst reeksen op cumulatieve ondergrenzen, zodat elke staaf zowel onderdelen als een totaal toont.
Een segment van 24 ritten boven een segment van 36 ritten geeft een gestapelde staaf met totale hoogte 60.
grafiekaccessor
De grafiekaccessor van pandas biedt grafiekmethoden op een Series of DataFrame en gebruikt standaard Matplotlib.
Gebruik de grafiekaccessor op gegroepeerde tellingen en voorzie het teruggegeven grafiekgebied daarna van een label met de eenheid.
grafiekgebied
Een grafiekgebied is één gebied in een Matplotlib-figuur waarin een grafiek wordt getekend, met eigen grafische objecten, labels, grenzen en een coördinatenstelsel.
Selecteer het juiste grafiekgebied voordat je een titel toevoegt aan de tweede deelgrafiek van een stationsvergelijking.
grafisch object
Een grafisch object is een object dat Matplotlib tekent, zoals een lijn, tekstlabel, verzameling markeringen of rechthoek.
Een referentielijn toevoegen maakt een extra grafisch object in het bestaande grafiekgebied.
grenzen van de kleurenschaal
De grenzen van de kleurenschaal bepalen de numerieke eindpunten en leggen vast hoe waarden in één of meer grafieken aan kleuren worden gekoppeld.
Gelijke grenzen van de kleurenschaal zorgen ervoor dat een blauwtint in twee hittekaarten dezelfde waarde weergeeft.
groepen naast elkaar plaatsen
Groepen naast elkaar plaatsen verschuift kleurgroepen naar afzonderlijke posities binnen elke categorie, zodat hun grafiekelementen naast elkaar kunnen worden vergeleken.
Als je groepen naast elkaar laat plaatsen in een puntenstrookdiagram, worden kleurgroepen gescheiden die anders zouden overlappen.

H

herhaalde deelgrafieken
Herhaalde deelgrafieken tonen hetzelfde type grafiek voor verschillende deelverzamelingen, meestal met gemeenschappelijke schalen om te vergelijken.
Met één neerslaggrafiek per station kunnen lezers seizoenspatronen vergelijken zonder overlappende lijnen.
histogram
Een histogram groepeert numerieke metingen in aangrenzende intervallen en gebruikt staven om hun aantallen of geschaalde frequenties te tonen.
Een histogram met klassen van vijf minuten groepeert reistijden voor woon-werkverkeer die dicht bij elkaar liggen in hetzelfde interval.
hittekaart
Een hittekaart geeft een numerieke tabel weer met gekleurde cellen, waarbij rij- en kolomlabels de positie van elke cel aangeven.
Een hittekaart van stations per maand kan een nat seizoen als een band van donkere cellen zichtbaar maken.

I

index
Een index geeft rijen in een pandas-object labels en levert horizontale coördinaten voor het standaardlijndiagram ervan.
Met een datumindex kan een lijndiagram van neerslag datums tonen zonder afzonderlijke x-kolom.
interkwartielafstand
De interkwartielafstand is Q3 min Q1 en meet de spreiding van de middelste helft van een geordende numerieke steekproef.
Als Q1 16 minuten is en Q3 24 minuten, is de interkwartielafstand 8 minuten.

K

kansdichtheid
Kansdichtheid schaalt aantallen met de steekproefgrootte en klassebreedte, zodat de oppervlakte in een histogram een aandeel waarnemingen weergeeft.
Een dichtheid van 0,02 per minuut over een klasse van tien minuten geeft een aandeel van 0,2.
kerndichtheidsschatting
Een kerndichtheidsschatting is een vloeiende schatting van de verdelingsvorm die ontstaat door kleine krommen rond waarnemingen te combineren.
Een kerndichtheidsschatting kan onder nul doorlopen, ook als elke gemeten tijd positief is.
klassengrens
Een klassengrens is een grens van een histograminterval die bepaalt welke waarden bij die klasse horen.
Een waarde op een tussenliggende klassengrens hoort bij de klasse die daar begint, niet bij de klasse die daar eindigt.
kleurenbalk
Een kleurenbalk is een numerieke legenda die laat zien hoe waarden aan kleuren worden gekoppeld in een spreidingsdiagram, hittekaart of andere afbeelding.
Met een kleurenbalk voor neerslag kunnen lezers het kleurverloop in een spreidingsdiagram van temperatuur en fietsverhuur interpreteren.
kleurkoppeling
Kleurkoppeling is een koppeling in seaborn die een variabele met kleur weergeeft en meestal een bijbehorende legenda toevoegt.
Categorische kleurkoppeling geeft stations afzonderlijke kleuren, terwijl numerieke kleurkoppeling een neerslagverloop kan tonen.
koppeling van variabelen aan visuele kenmerken
Een koppeling van een variabele aan een visueel kenmerk verbindt een gegevensvariabele met bijvoorbeeld positie, kleur, markeringsstijl of grootte.
Door station zowel aan kleur als aan stijl te koppelen, onderscheid je dezelfde groepen op twee visuele manieren.
kwartiel
Een kwartiel is een grens die geordende gegevens in vier delen verdeelt; Q1 en Q3 begrenzen volgens de gekozen methode de middelste helft.
Geïnterpoleerde kwartielen kunnen in een kleine steekproef verschillen van handmatig berekende medianen van de steekproefhelften.

L

lang formaat
Lang formaat slaat variabelen op in kolommen en waarnemingen in rijen, met een groepskolom die elke reeks aanduidt.
Een lange tabel kan de stationskolom aan kleur koppelen en de neerslagkolom aan de verticale positie.
lijndiagram
Een lijndiagram verbindt waarnemingen in de opgegeven volgorde en maakt veranderingen langs een geordende variabele zichtbaar.
Door afstand en hoogte samen te sorteren, blijft de lijn van een route vooruitlopen langs het pad.
logaritmische schaal
Een logaritmische schaal geeft gelijke visuele afstanden aan gelijke verhoudingen van positieve waarden in plaats van aan gelijke verschillen.
Op een logaritmische schaal neemt 2 tot 20 dezelfde afstand in als 20 tot 200.

M

maatstreepje
Een maatstreepje is een gemarkeerde positie op een coördinaatas; het bijbehorende label is de tekst die die positie beschrijft.
Maandnummers kunnen maatstreepjes hebben met labels “Jan”, “Feb” en “Mar” zonder hun posities te veranderen.
markeringsoppervlakte
Markeringsoppervlakte is de groottemaat die het scatter-argument s bepaalt, gemeten in vierkante typografische punten.
Als de markeringsoppervlakte verdubbelt, wordt een markering ongeveer 1,4 keer zo breed, niet twee keer zo breed.
matrix van spreidingsdiagrammen
Een matrix van spreidingsdiagrammen is een raster dat paren numerieke variabelen vergelijkt, met de eigen verdeling van elke variabele op de diagonaal.
Als je een matrix van spreidingsdiagrammen beperkt tot drie variabelen, krijg je negen deelgrafieken voordat herhaalde paren worden verwijderd.
mozaïekindeling van deelgrafieken
Een mozaïekindeling van deelgrafieken definieert een indeling met herhaalde namen voor deelgrafieken die meerdere cellen beslaan en geeft een dictionary van grafiekgebieden terug.
Een mozaïekindeling van deelgrafieken kan een brede trendgrafiek boven twee kleinere verdelingsgrafieken plaatsen.

N

nauwsluitend begrenzingskader
Een nauwsluitend begrenzingskader laat de export aansluiten op de getekende inhoud en de marge eromheen, waardoor de uiteindelijke afbeeldingsafmetingen kunnen veranderen.
Een nauwsluitend begrenzingskader kan een legenda buiten de figuur opnemen en ongebruikte marges verwijderen.
numerieke kolom
Een numerieke kolom slaat waarden op als getallen die grafiekmethoden kunnen gebruiken voor metingen en samenvattingen.
Een kolom met tekenreeksen zoals “18 mm” moet worden opgeschoond voordat die een numerieke kolom wordt.

O

objectgeoriënteerde interface
De objectgeoriënteerde interface tekent en bewerkt grafieken via benoemde figuur- en grafiekgebiedobjecten en hun methoden.
Door een verwijzing naar elk grafiekgebied te bewaren, kan een grafiekfunctie de bedoelde deelgrafiek van een label voorzien.
omzetten naar breed formaat
Omzetten naar breed formaat rangschikt waarden opnieuw in rijen en kolommen op basis van twee identificatiecodes; elk paar identificatiecodes moet uniek zijn.
Herhaalde metingen voor één station en maand vereisen aggregatie vóór een gewone omzetting naar breed formaat.
omzetten naar lang formaat
Omzetten naar lang formaat herstructureert reekskolommen tot een kolom met variabelenamen en een waardekolom, terwijl gekozen identificatiecodes behouden blijven.
Door drie stationskolommen naar lang formaat om te zetten ontstaat een stationsveld dat seaborn kan gebruiken voor deelgrafieken per groep.
oorspronkelijke schaal
De oorspronkelijke schaal behoudt de werkelijke numerieke afstand of datumafstand op een categorische as van seaborn in plaats van gelijke categoriestappen te gebruiken.
Met de oorspronkelijke schaal liggen de jaren 2019 en 2023 verder uit elkaar dan 2019 en 2020.
opmaakfunctie voor aslabels
Een opmaakfunctie voor aslabels zet coördinaatwaarden om in weergegeven labels en laat de onderliggende numerieke gegevens ongewijzigd.
Een percentageopmaakfunctie kan de fractie 0,4 als “40%” weergeven in een grafiek met aandelen.
overlap van grafiekelementen
Overlap van grafiekelementen ontstaat wanneer elementen elkaar zo sterk overlappen dat waarnemingen verborgen blijven of dichtbevolkte gebieden moeilijk te lezen zijn.
Kleinere, deels transparante markeringen tonen clusters die in een grote steekproef door overlap van grafiekelementen verborgen blijven.

P

puntenstrookdiagram
Een puntenstrookdiagram tekent afzonderlijke waarnemingen per categorie, meestal met kleine willekeurige puntverschuivingen om exacte overlap te verminderen.
Een puntenstrookdiagram over een boxplot toont afzonderlijke bezorgtijden naast hun samenvatting.

R

rasterafbeelding
Een rasterafbeelding slaat een vast raster van pixels op, zodat tekst en lijnen er wazig uit kunnen zien als je de afbeelding vergroot.
Een PNG-export met voldoende pixels houdt labels scherp op de bedoelde weergavegrootte.
referentielijn
Een referentielijn markeert een betekenisvolle coördinaatwaarde in een grafiek, zoals een streefwaarde, gemiddelde of drempel.
Een verticale referentielijn bij de mediaan helpt om de twee kanten van een verdeling te vergelijken.
regressielijn
Een regressielijn is een aangepaste lijn die een gemodelleerd verband tussen numerieke variabelen in een steekproef samenvat.
Een rechte regressielijn kan een kromlijnig patroon missen dat in de punten zichtbaar blijft.
relatieve grafiekgebiedcoördinaten
Relatieve grafiekgebiedcoördinaten bepalen de plaats van een element met fracties van het grafiekgebied, van nul linksonder tot één rechtsboven.
Een notitie over de steekproefgrootte op grafiekgebiedpositie (0,02; 0,95) blijft bij de linkerbovenhoek van de deelgrafiek.
rijnormalisatie
Rijnormalisatie deelt elke waarde door het rijtotaal, zodat de rij aandelen weergeeft die optellen tot één.
Rijnormalisatie vergelijkt de verdeling van vervoerswijzen tussen regio's met verschillende aantallen ritten.

S

schatter
Een schatter is de regel waarmee herhaalde waarnemingen worden samengevat, zoals hun gemiddelde, mediaan of som.
Als je de schatter van gemiddelde naar som verandert, verandert wat de hoogte van een seaborn-staaf voorstelt.
sequentiële kleurenschaal
Een sequentiële kleurenschaal ordent kleuren van lage naar hoge waarden en maakt zo groottes in een numerieke tabel zichtbaar.
Een sequentiële kleurenschaal past bij niet-negatieve bezoekersaantallen van rustige tot drukke perioden.
snor
Een snor loopt volgens de gebruikelijke boxplotregel van een box naar de meest extreme waarneming binnen de bijbehorende uitschietergrens.
Een bovenste uitschietergrens van 36 minuten en een maximum binnen die grens van 33 plaatsen de snor bij 33 minuten.
spreidingsdiagram
Een spreidingsdiagram plaatst afzonderlijke markeringen bij paren numerieke waarden om verbanden tussen waarnemingen te tonen.
Elke markering in een spreidingsdiagram kan de temperatuur en fietsverhuur van één dag voorstellen.
standaardafwijkingsband
Een standaardafwijkingsband strekt zich een gekozen aantal standaardafwijkingen rond een samenvatting uit om de spreiding van gegevens te tonen.
Een band van één standaardafwijking beantwoordt een andere vraag dan een betrouwbaarheidsband voor een gemiddelde.
stijlblad
Een stijlblad is een benoemde verzameling Matplotlib-standaardinstellingen voor visuele kenmerken zoals kleuren, rasters, lettertypen en lijnbreedtes.
Een stijlcontext past een stijlblad toe tijdens één blok zonder latere grafieken te veranderen.

T

thema
Een thema is een verzameling standaardinstellingen voor stijl, tekstgrootte en palet die invloed heeft op grafieken die daarna worden gemaakt.
Een seaborn-thema instellen verandert ook het uiterlijk van latere gewone Matplotlib-grafieken.

U

uitschieter
Een uitschieter is een waarneming die buiten de snorren van een boxplot wordt getekend omdat die buiten de gekozen uitschietergrenzen valt.
Een echte verkeersvertraging kan als uitschieter verschijnen en toch in een dataset met bezorgtijden thuishoren.
uitschietergrens
Een uitschietergrens is een berekende afkapwaarde om ongebruikelijke waarden in een boxplot te markeren, meestal op 1,5 IQR buiten een kwartiel.
De bovenste uitschietergrens kan tussen waarnemingen vallen en hoeft dus niet het uiteinde van de bovenste snor te zijn.

V

vectorafbeelding
Een vectorafbeelding slaat vormen en paden op die kunnen worden geschaald zonder de pixelvorming van een vergrote rasterafbeelding.
Een SVG-grafiek houdt vectortekst en -lijnen scherp als je de grootte voor een rapport aanpast.
verwijzing naar een figuurobject
Een verwijzing naar een figuurobject is een Python-variabele die een figuurobject bewaart om later te bewerken of op te slaan, ook nadat pyplot het heeft losgelaten.
Door de verwijzing naar het figuurobject te bewaren, kan een latere notebookcel de oorspronkelijke grafiek opslaan in plaats van een lege.
verzameling staven
Een verzameling staven wordt teruggegeven door een aanroep die staven tekent en bevat de staven die later waardelabels kunnen krijgen.
Bewaar de verzameling staven als je één reeks in een gegroepeerde grafiek van labels wilt voorzien.
viooldiagram
Een viooldiagram toont voor elke groep een gespiegelde dichtheidsschatting, vaak met een kleine samenvatting erin.
Een viooldiagram kan twee pieken tonen die door een boxplot van dezelfde waarnemingen worden verborgen.

Z

zwermdiagram
Een zwermdiagram verschuift afzonderlijke punten in de categorierichting om overlap te voorkomen wanneer er voldoende ruimte is.
Een zwermdiagram kan herhaalde tijden afzonderlijk tonen in plaats van ze op één plek te verbergen.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag