Plotting/graftegning i Python

Vi kan plotte/tegne grafer i Python for å lage programmer som gir grafiske framstillinger.

For å plotte i Python, trenger vi å importere biblioteket matplotlib.pyplot, og det gjør vi slik:

from matplotlib.pyplot import *

Her er en oversikt over noen av de vanligste funksjonene:

Kommando Beskrivelse

plot(x, y) Plotter verdiene i x og y mot hverandre med strek mellom hvert punkt

scatter(x, y) Plotter verdiene i x og y mot hverandre uten strek mellom hvert punkt

bar(x, y) Plotter verdiene i x og y mot hverandre som søylediagram

color='fargenavn' Angir farge, og skrives inn i plot()  eller scatter() (kan bruke nesten alle engelske fargenavn)​

label='merknad' Angir navn på elementene i grafen, og skrives inn i plot(), scatter() eller bar()

title('Tittel')​ Setter inn tittelen på grafen øverst i vinduet (skriv tittelen i parentesen)​

xlabel('Aksenavn')​ Setter inn navn på x-aksen (skriv aksenavnet i parentesen)​

ylabel('Aksenavn') Setter inn navn på y-aksen (skriv aksenavnet i parentesen)​

xlim(a, b) Gir a som nedre og b som øvre grense for x-aksen​

ylim(a, b) Gir a som nedre og b som øvre grense for y-aksen​

grid()​ Tegner rutenett​ (trenger ikke skrive noe i parentesen)

axvline()​ Lager vertikal linje x = 0

axvline(a) Lager vertikal linje x = a

axhline() Lager horisontal linje y = 0

axhline(b) Lager horisontal linje y = b

show() Viser grafen​, må være med til slutt (trenger ikke skrive noe i parentesen)

Tegning av grafer

Vi ser først på et eksempel der vi plotter funksjonen f(x) = x2 for noen verdier av x. Det kan være du må trykke på "Run"-knappen to ganger for å se grafen.

Merk at listene x og y har like mange elementer - det er viktig, for ellers kan de ikke plottes mot hverandre!

Her er et nytt plott med flere detaljer, der vi bruker flere av funksjonene i tabellen over:

Plotting og sannsynlighet

Graftegning er en god måte å visualisere tilfeldige simuleringer. Det kan for eksempel brukes til å gi et bilde av "De store talls lov", altså det at jo flere tilfeller man har av en hendelse, jo nærmere vil man komme det forventede resultatet. 

Her er et program som simulerer terningkast med én terning og viser fordelingen på antall øyne i et søylediagram:

Oppgave: Søylediagramutvidelse

Ta utgangspunkt i koden over og lag et program som kaster to terninger, og lagrer summen av øynene i ei liste. Til slutt skal programmet lage et søylediagram som viser hvor mange ganger vi fikk hver sum.

Løsningsforslag

Monty Hall-reprise

Vi kan også framstille Monty Hall-problemet grafisk. Vi vet at det er forventet at vi skal vinne 2/3 av gangene. Nå skal vi utvidesimuleringa vår til å lage et program som for hver runde lagrer "vinnerandelen" (antall gunstige i gang nummer x, delt på x), og så plotter den mot forventningsverdien til slutt:

Ferdig program

Oppgave: Myntkast

Skriv et program som simulerer myntkast, og plotter andel av kastene vi fikk kron på. Du kan hente inspirasjon fra Monty Hall-programmet over.

Startkode

Løsningsforslag