Diagrammet regner ut tallene selv

Handler om: Visualisering (stolpe- og sektordiagram)

Du tror at hvis du gir matplotlib hele datasettet, så teller eller grupperer det selv og lager riktige stolper. Men et diagram tegner bare det du gir det. Du må aggregere først — lage én liste med kategoriene og én liste med verdiene — og så sende de to listene til plt.bar().

Eksempel

Du har data som er en liste av ordbøker og vil ha en stolpe per karakter. Du sender hele lista rett til plt.bar() og forventer at den teller for deg — men matplotlib vet ikke hva den skal telle.

Slik tenker du riktig om det

Skill «analyser» fra «presenter»: først regner du ut svaret (aggregering → en ordbok eller to lister), deretter tegner du det. Diagrammet er siste steg, ikke utregningen. Samme to lister som x og høyde hver gang.

Slik ser det ut i kode

Slik gikk det galt

import matplotlib.pyplot as plt
# data er en liste av ordbøker
plt.bar(data)          # matplotlib aner ikke hva som er x og høyde
plt.show()

Slik fikser du det

import matplotlib.pyplot as plt
# 1) aggreger først
teller = {}
for elev in data:
    k = elev["karakter"]
    teller[k] = teller.get(k, 0) + 1
# 2) del opp i to lister og plott
karakterer = list(teller.keys())
antall = list(teller.values())
plt.bar(karakterer, antall)
plt.show()

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala