Datalandsbyen Logo

    Datalandsbyen

    • Kategorier
    • Emneord
    • Siste
    • Populære
    • Kalender
    • Lenkeikon
    • Søk
    • Varslinger Logg inn / Registrer
    Community illustrasjon

    Datalandsbyen

    Velkommen til nettforumet Datalandsbyen! Vi er glade for at du har funnet frem til oss.

    Her kan du stille spørsmål om alt du måtte lure på om deling og bruk av data, eksempelvis datasett, API-er, begreper, informasjonsmodeller og juss, videre kan du delta i diskusjoner, vise frem prosjektene dine, knytte nye kontakter og finne nye samarbeid. Nettforumet er åpent for alle, men for å skrive innlegg må du først registrere deg. Formålet med forumet er å legge til rette for at data skal bli en verdiskapende ressurs for hele samfunnet – bli med og bidra til økt kunnskap, åpenhet og innovasjon. Vi oppfordrer til en konstruktiv og saklig dialog i nettforumet.

    Magasinstatistikk for norsk kraftproduksjon

    Gode eksempler på bruk
    energi nve strømpriser magasinstatistikk
    1
    1
    699
    Laster flere innlegg
    • Eldste til nyeste
    • Nyeste til eldste
    • Flest stemmer
    Denne tråden har blitt slettet. Bare brukere med trådhåndterings-privilegier kan se den.
    • K
      kyrre.nordhagen sist endret av kyrre.nordhagen

      Når politikere, analytikere eller andre skal forklare, eller bortforklare 😊, kraftprisene henvises det ofte til magasinfyllingen i norske vannmagasiner. Fordi vannkraften står for om lag 90-prosent av kraftproduksjonen i Norge, er fyllingsgraden eller lagret av vann viktig både for strømpriser og for at vi skal ha strøm når vi trenger den.

      De underliggende dataene er enklere tilgjengelig enn hva mange kanskje tror. Norges vassdrags- og energidirektorat (NVE) har åpne API-er for disse datasettene som oppdateres ukentlig. I datakatalogen kan du finne veien til magasinstatistikk fra NVE. Mer informasjon om datasettet finnes her.

      API-er for magasinstatistikk
      Det er flere API-er fra denne statistikken. Her har vi to av de:

      • https://nvebiapi.nve.no/api/Magasinstatistikk/HentOffentligDataMinMaxMedian. API-et gir et datasett over minimum-, maksimum- og medianverdier.

      • https://nvebiapi.nve.no/api/Magasinstatistikk/HentOffentligData. API-et gir et datasett med ca. 13 000 rader med ukentlig oppdatering siden 1995.

      Disse dataene kan benyttes til mange formål og fremstillinger. Nedenfor viser vi et par eksempler.

      Eksempel: Utvikling av fyllingsgraden for hele landet så langt i år

      Magasin_NO_ggplot.jpeg

      I grafen ser vi utviklingen av fyllingsgraden for Norge i år, mot historisk minimums- og maksimumsnivåer. Vi ser at fyllingsgraden i dag er rett under 70% for landet samlet sett.

      Eksempel: Store variasjoner i fyllingsgrad mellom de ulike områdene

      Magasin_plot_grid.jpeg

      Grafene viser fyllingsgraden for ulike prisområder i Norge. For Østlandet (NO1) og Sør-Norge (NO2), de to øverste grafene, er det historisk lav fyllingsgrad. Det er situasjonen her som har bidratt til spekulasjonene om vi har nok vann til vinteren. For Nord-Norge (NO4) derimot, er det historisk høy fyllingsgrad på 90%. Disse variasjonene er ett viktig element til de store prisforskjellene en har sett mellom nord og sør.

      Grafene er utarbeidet i R, men kan følgelig utarbeides i mange andre verktøy. Legger ved koden for de siste eksemplet, som sikkert har rom for forbedringer. Kom gjerne med andre fremstillinger eller eksempler.

      #pakker(samlinger av funksjonalitet i R) for oppgaven NB! Må installeres først
      library(jsonlite) 
      library(tidyverse) #inneholder bl.a. ggplot2 som vi benytter for plot
      library(httr)
      library(gridExtra) #for flere plot
      #1) Henter inn datasettene
      dat1 <- "https://nvebiapi.nve.no/api/Magasinstatistikk/HentOffentligDataMinMaxMedian" %>%
       fromJSON() #datasett over min, max og median
       
      dat2 <- "https://nvebiapi.nve.no/api/Magasinstatistikk/HentOffentligData" %>%
       fromJSON() #datasett over magasinfylling siden 1995 med ca 13000 rader
      
      #2) Strukturerer data
      df1 <- dat1[dat1$omrType %in% c("EL"), ]
      df1 <- df1[,c(2,3,4,8)]
      colnames(df1)<- c("omrnr","Uke", "min", "maks")
      df1 <- gather(df1, Aar, fyllingsgrad, min:maks, factor_key = FALSE)
      
      df2 <- dat2[dat2$omrType %in% c("EL"), ]
      df2 <- df2[,(3:6)]
      colnames(df2) <- c("omrnr","Aar","Uke","fyllingsgrad")
      df2 <- df2[df2$Aar %in% c(2022), ] 
      df2$Aar = paste0('yr', df2$Aar)
      
      df3 <- bind_rows(df1, df2) #lager en tabell av df1 og df2
      
      #3)Lager og formaterer plot (det som er felles). Benytter ggplot-pakken. 
      p1 <- ggplot(df3, aes(x = Uke, y = fyllingsgrad*100, colour = Aar, size = Aar))+  
       labs(x= "Ukenummer", y = "Fyllingsgrad (%)", size = 0.7)+
       theme(panel.background = element_rect(fill="grey95"))+
       theme(legend.position = "bottom",legend.justification="top", legend.title = element_blank())+
       scale_x_continuous(breaks = seq(0, 52, by = 5))+
       scale_y_continuous(breaks = seq(0, 100, by = 10), limits = c(0,100))+
       scale_color_manual(values = c(maks = "black", yr2022 = "red", min = "black"))+
       scale_size_manual(name= "", values = c(maks = 0.7, yr2022 = 0.9, min = 0.7), guide = "none")
      
      #4) Lager de ulike plotene (dataene er forskjellig) for de ulike prisomraadene:
      NO1 <- p1 + 
       geom_line(data = df3[df3$omrnr %in% c(1), ], ) + 
       labs(title = "Magasinfylling i ulike prisomraader mot min- og maksimumsnivaer", subtitle =   "Prisomraade: NO1", caption = "")
      
      NO2 <- p1 + 
       geom_line(data = df3[df3$omrnr %in% c(2),], ) + 
       labs(title = "", subtitle = "Prisomrade: NO2", caption = "")
      
      NO3 <- p1 + 
       geom_line(data = df3[df3$omrnr %in% c(3), ], ) + 
       labs(title = "", subtitle = "Prisomrade: NO3", caption = "")
      
      NO4 <- p1 + 
       geom_line(data = df3[df3$omrnr %in% c(4), ], ) + 
       labs(title = "", subtitle = "Prisomrade: NO4", caption = "Data: www.nve.no")
      
      #5) De ulike plotene:   
      grid.arrange(NO1,NO2,NO3, NO4, nrow=2, ncol=2)
      
      
      1 Svar Siste svar Svar Siter 2
      Ikon Svar
      Ikon Logg inn for å besvare
      • Første innlegg
        Seneste innlegg
      • Datalandsbyen Logo
      • Våre partnere
      • Felles datakatalog Åpne
      • Datafabrikken Åpne
      • Transportportal Åpne
      • Om nettstedet
      • Digitaliseringsdirektoratet forvalter datalandsbyen.
      • Samtykke og brukervilkår
      • Personvernerklæring Åpne
      • Informasjonskapsler Åpne
      • Tilgjengelighetserklæring Åpne
      • Kontakt
      • Lenkeikonfellesdatakatalog@digdir.no