Uke 12

Innlevering, og Krav for å bestå

Generelt tips: les alltid gjennom kursnotatene før du begynner på lab’en!



Oppgave 1: Utforske pyplot

I denne oppgaven skal vi ta utgangspunk i den følgende koden:

import matplotlib.pyplot as plt
from math import sin

# liste med x-verdier
xs = [n / 10 for n in range(101)]
# 2 ulike lister med y-verdier
ys_1 = [sin(x) for x in xs]
ys_2 = [3 * sin(x) for x in xs]

plt.plot(xs, ys_1, "-.r")
plt.plot(xs, ys_2, "--b")

# savefig lagrer filene
plt.savefig("test.png")
plt.savefig("test.pdf")

# interaktivt vindu
plt.show() # Hva skjer om vi ikke har med den raden: plt.show()?

Denne koden produserer følgende plot:

Denne koden produserer følgende plot:

Del A

I filen uke_12_oppg_1a.py endre på koden i eksempelet ovenfor slik at grafene tegnes med tittel, navn på x-y-aksen,figure-lengend, og annen farge og stil. Du kan velge farge og stil selv. Filen du leverer er uke_12_oppg_1a.py, og du skal også laste opp png-filen med plotten, med filnavnet uke_12_oppg_1a.png.

Eksempel figure:

Denne koden produserer følgende plot:

Del B

I filen uke_12_oppg_1b.py, ta koden fra eksemplet overfor og endre koden slik at den viser en “stem”-plot i stedet for en “line”-plot. Finn frem stem() i matplotlib-dokumentasjonen. Du kan velge farge og stil selv. Filen du leverer skal hete uke_12_oppg_1b.py og du skal også laste opp png-filen med plotten, med filnavnet uke_12_oppg_1b.png.

Eksempel figure:

Denne koden produserer følgende plot:

Del C

I filen uke_12_oppg_1c.py,ta koden fra eksemplet overfor og legg til en pil til alle interseksjons-punktene etter (\(0,0\)) med kommentaren intersection. Det kan gjøres manuelt, du trenger ikke regne ut hvor punktene er. Du kan velge farge og stil selv.

Husk å søke i matplotlib-dokumentasjonen, funksjonen heter annotate. Lever også bildet i filen uke_12_oppg_1c.png.

Eksempel figure:

Denne koden produserer følgende plot:
Oppgave 2: Plotting av kart over et land

I filen uke_12_oppg_2.py skal du lage en funksjon map_plot(filepath) som tar en filsti til en JSON-fil som input. Funksjonen skal bruke json-biblioteket for å åpne filen og matplotlib.pyplot-biblioteket for å plotte geografisk data i GeoJSON-format.

Lever også bildet i filen uke_12_oppg_2.png sammen med uke_12_oppg_2.py

coordinates = data['features'][0]['geometry']['coordinates']

En testkjøring med filen norway.json skal produsere følgende kartet.

Avslutt med plt.savefig() for å lagre bildet. Ikke ha med plt.show() når du laster opp filen din, autotestene kan ikke kjøre den.

Illustrasjon av forventet figuren
Oppgave 3: Oversikt over flyplasser i verden

Filen airport-codes.csv er en CSV-fil som inneholder en oversikt over mange flyplasser i verden.

I filen uke_12_oppg_3.py skal programmet ditt gjøre det følgende:

  1. Les data fra filen inn i passende datastrukturer (list / dict / …). Vi trenger kun informasjonen fra de 3 kolonnene som er nevnt ovenfor. Det er nyttig å splitte koordinatene i lengde og bredde allerede her.

  2. Bruk matplotlib for å plotte posisjonen til de ulike flyplassene på en kart. Bruk en liten prikk for de mellomstore flyplassene, og en større prikk for de store flyplassene. Velg en lys farge for prikkene.

  3. Bruk matplotlib.annotate(iata_code, (lengde, bredde)) i en løkke over alle store flyplassene for å skrive IATA-navnet på bildet.

  4. Sett inn en tittel og aksebeskrivelser.

  5. Avslutt med plt.savefig() for å lagre bildet. Ikke ha med plt.show() når du laster opp filen din, autotestene kan ikke kjøre den.

Lever også bildet i filen uke_12_oppg_3.png sammen med uke_12_oppg_3.py

Eksempelkjøring:

Denne koden produserer følgende plot:

Hvis det tar lang tid å kjøre koden, kan du bruke en mindre versjon av csv filen mens du tester.
airport-codes-small.csv