Skriptet ditt er for dine data det notatblokken er for din artikkel.
Skriptet ditt er for dine data det kakeoppskriften er for din kake.
Du har full kontroll, ref. pkt. 4.
###Pakker som må installeres
#pakker - c("ggplot2", "writexl", "readxl", "tidyr", "dplyr", "rvest", "lubridate", "jsonlite", "networkD3", "htmlwidgets")
#install.packages(pakker)
#Øvelse 1: Elever i grunnskolen
#setwd("STI TIL FILENE DINE")
library(ggplot2)
library(writexl)
elever <- read.csv("data/elever.csv", sep=";")
str(elever)
## 'data.frame': 724 obs. of 7 variables:
## $ region : chr "3001 Halden" "3002 Moss" "3003 Sarpsborg" "3004 Fredrikstad" ...
## $ Elever.per.kommunal.skole..antall..2015: chr "." "." "." "." ...
## $ Elever.per.kommunal.skole..antall..2016: chr "." "." "." "." ...
## $ Elever.per.kommunal.skole..antall..2017: chr "." "." "." "." ...
## $ Elever.per.kommunal.skole..antall..2018: chr "." "." "." "." ...
## $ Elever.per.kommunal.skole..antall..2019: chr "." "." "." "." ...
## $ Elever.per.kommunal.skole..antall..2020: chr "318.2" "309.5" "330.9" "303.2" ...
#Rydd opp i dataene
fjern <- c(2:6)
elever <- elever[-fjern]
names(elever) <- c("region", "antall_2020")
fjern.tomme <- which(elever$antall_2020 == ".")
elever <- elever[-fjern.tomme,]
#Ta vekk kommunenummer i navnet
elever$region <- substr(elever$region,6,nchar(elever$region))
elever$antall_2020 <- as.numeric(elever$antall_2020)
ggplot(elever, aes(x=region, y=antall_2020)) + geom_point()
elever <- elever[order(elever$antall_2020),]
#https://www.nrk.no/innlandet/800-elever-og-ansatte-ved-glommasvingen-skole-i-sor-odal-settes-i-karantene-1.15424260
elever$gruppe <- cut(elever$antall_2020, breaks = c(0,100,200,300,400,Inf))
#Lag en grafisk fremstilling
ggplot(elever, aes(x=region, y=antall_2020, color=gruppe)) + geom_point()
ggplot(elever, aes(x=region, y=antall_2020, color=gruppe)) + geom_point() +
geom_text(aes(label=ifelse(antall_2020 > 400,as.character(region),"")),hjust=1.1,vjust=0) +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
ggtitle("Antall elever på norske grunnskoler \npr. kommune (2020)")
write_xlsx(elever, "data/elever.xlsx")
library(rvest)
url <- "https://no.wikipedia.org/wiki/Norge"
xpath <- as.character('//*[@id="mw-content-text"]/div/table[3]')
tabell <- url %>% read_html() %>% html_nodes(xpath=xpath) %>% html_table()
tabell
## [[1]]
## # A tibble: 20 × 4
## `` Tettsted Folkemengde `Areal, km²`
## <chr> <chr> <chr> <chr>
## 1 1 av 983 Oslo 1 043 168 270,45
## 2 2 av 983 Bergen 265 470 90,3
## 3 3 av 983 Stavanger/Sandnes 229 911 80,09
## 4 4 av 983 Trondheim 191 771 58,61
## 5 5 av 983 Fredrikstad/Sarpsborg 117 663 59,95
## 6 6 av 983 Drammen 110 236 47,34
## 7 7 av 983 Porsgrunn/Skien 94 102 53,83
## 8 8 av 983 Kristiansand 64 913 25,08
## 9 9 av 983 Ålesund 54 399 28,53
## 10 10 av 983 Tønsberg 53 818 26,23
## 11 11 av 983 Moss 47 725 22,13
## 12 13 av 983 Haugesund 45 436 21,26
## 13 12 av 983 Sandefjord 45 520 24,19
## 14 14 av 983 Bodø 42 351 14,84
## 15 15 av 983 Tromsø 40 979 13,65
## 16 16 av 983 Arendal 37 861 27,28
## 17 17 av 983 Hamar 28 535 13,95
## 18 19 av 983 Halden 25 887 14,23
## 19 18 av 983 Larvik 26 731 15,04
## 20 20 av 983 Askøy 23 952 15,04
#Kan vi lage en generisk funksjon?
get.table <- function(url, nr) {
xpath <- paste0('//*[@id="mw-content-text"]/div/table[', nr, ']', collapse = "")
tabell <- url %>% read_html() %>% html_nodes(xpath=xpath) %>% html_table()
tabell
}
#Kan vi hente ut flere på en gang?
sider <- c("https://no.wikipedia.org/wiki/USA", "https://no.wikipedia.org/wiki/Norge","https://no.wikipedia.org/wiki/Tyskland")
sider
## [1] "https://no.wikipedia.org/wiki/USA"
## [2] "https://no.wikipedia.org/wiki/Norge"
## [3] "https://no.wikipedia.org/wiki/Tyskland"
lapply(1:length(sider), function(x) get.table(sider[x],2))
## [[1]]
## [[1]][[1]]
## # A tibble: 9 × 2
## Rase Prosent
## <chr> <chr>
## 1 kaukasoide-amerikanere 72,4 (ikke-spanske hvite 63,7)
## 2 Afroamerikanere 12,6
## 3 Asiatisk 4,8
## 4 Innfødte fra Hawaii og stillehavsøyene 0,9
## 5 Amerikanske innfødte og innfødte i Alaska 0,9
## 6 Andre 6,2
## 7 Multietniske (to eller flere raser) 2,9
## 8 Latinamerikanere (uansett rase) 16,3
## 9 Ikke-latinamerikansk (uansett rase) 83,7
##
##
## [[2]]
## [[2]][[1]]
## # A tibble: 6 × 6
## `Storby (tettsted)` `Vinter (des-feb)` `Vår(mar-mai)` `Sommer(jun-aug)`
## <chr> <chr> <chr> <chr>
## 1 Oslo 1 °C 14 °C 21 °C
## 2 Bergen 4 °C 11 °C 19 °C
## 3 Stavanger/Sandnes 3 °C 11 °C 18 °C
## 4 Trondheim 0 °C 9 °C 18 °C
## 5 Fredrikstad/Sarpsborg 0 °C 11 °C 21 °C
## 6 Drammen –1 °C 12 °C 21 °C
## # … with 2 more variables: `Høst(sep-nov)` <chr>, `Nedbør(per år)` <chr>
##
##
## [[3]]
## [[3]][[1]]
## # A tibble: 17 × 8
## Delstat `Innbyggere[mi…` `Katolikker[mi…` `Protestanter[…` `Andre[million…`
## <chr> <chr> <chr> <chr> <chr>
## 1 Baden-Wü… 10,75 4,12 3,69 2,95
## 2 Bayern 12,52 7,32 2,74 2,45
## 3 Berlin 3,42 0,32 0,74 2,37
## 4 Brandenb… 2,54 0,08 0,50 1,97
## 5 Bremen 0,66 0,06 0,29 0,29
## 6 Hamburg 1,77 0,18 0,58 1,01
## 7 Hessen 6,07 1,57 2,53 1,97
## 8 Mecklenb… 1,68 0,06 0,31 1,31
## 9 Niedersa… 7,97 1,43 4,18 2,37
## 10 Nordrhei… 18,00 7,81 5,11 5,08
## 11 Rheinlan… 4,05 1,90 1,30 0,85
## 12 Saarland 1,04 0,68 0,20 0,15
## 13 Sachsen 4,22 0,15 0,90 3,21
## 14 Sachsen-… 2,41 0,09 0,45 1,87
## 15 Schleswi… 2,84 0,17 1,62 1,05
## 16 Thüringen 2,29 0,19 0,60 1,51
## 17 Totalt 82,22 25,49 24,83 31,90
## # … with 3 more variables: `Katolikker[%]` <chr>, `Protestanter[%]` <chr>,
## # `Andre[%]` <chr>
##Areal vs befolkning
library(ggplot2)
library(readxl)
options(scipen = 999) #Ta vekk vitenskapsnotasjon
kommuner <- read_xlsx("data/kommuner.xlsx")
names(kommuner) <- c("komnr", "navn", "admsenter", "fylke", "befolkning", "areal", "språk",
"ordfører", "parti")
kommuner$språk <- gsub("Neutral", "Nøytral", kommuner$språk)
kommuner$befolkning <- gsub(",", "", kommuner$befolkning)
str(kommuner)
## tibble [356 × 9] (S3: tbl_df/tbl/data.frame)
## $ komnr : chr [1:356] "0301" "1101" "1103" "1106" ...
## $ navn : chr [1:356] "Oslo" "Eigersund" "Stavanger" "Haugesund" ...
## $ admsenter : chr [1:356] "Oslo" "Egersund" "Stavanger" "Haugesund" ...
## $ fylke : chr [1:356] "Oslo" "Rogaland" "Rogaland" "Rogaland" ...
## $ befolkning: chr [1:356] "673469" "14898" "141186" "37167" ...
## $ areal : chr [1:356] "454.03" "431.66" "262.52" "72.72" ...
## $ språk : chr [1:356] "Nøytral" "Bokmål" "Bokmål" "Bokmål" ...
## $ ordfører : chr [1:356] "Marianne Borgen" "Leif Erik Egaas" "Kari Nessa Nordtun" "Petter Steen jr" ...
## $ parti : chr [1:356] "SV" "H" "Ap" "H" ...
kommuner$befolkning <- as.integer(kommuner$befolkning)
kommuner$areal <- as.numeric(gsub(",", "", kommuner$areal))
str(kommuner)
## tibble [356 × 9] (S3: tbl_df/tbl/data.frame)
## $ komnr : chr [1:356] "0301" "1101" "1103" "1106" ...
## $ navn : chr [1:356] "Oslo" "Eigersund" "Stavanger" "Haugesund" ...
## $ admsenter : chr [1:356] "Oslo" "Egersund" "Stavanger" "Haugesund" ...
## $ fylke : chr [1:356] "Oslo" "Rogaland" "Rogaland" "Rogaland" ...
## $ befolkning: int [1:356] 673469 14898 141186 37167 76328 3331 3237 2826 18762 19042 ...
## $ areal : num [1:356] 454 431.7 262.5 72.7 304.5 ...
## $ språk : chr [1:356] "Nøytral" "Bokmål" "Bokmål" "Bokmål" ...
## $ ordfører : chr [1:356] "Marianne Borgen" "Leif Erik Egaas" "Kari Nessa Nordtun" "Petter Steen jr" ...
## $ parti : chr [1:356] "SV" "H" "Ap" "H" ...
#Legg til kolonne med befolkningstetthet
kommuner$tetthet <- kommuner$befolkning / kommuner$areal
gg <- ggplot(kommuner, aes(x=areal, y=befolkning)) +
geom_point(aes(col=fylke, size=tetthet)) +
geom_smooth(method="loess", se=F) +
xlim(c(0,9750)) +
ylim(c(0,675000)) +
labs(subtitle = "Areal vs befolkning",
y="Befolkning",
x="Areal",
title="Scatterplot")
theme_set(theme_bw())
plot(gg)
## `geom_smooth()` using formula 'y ~ x'
#Ta vekk Oslo og kommuner med størst areal
minste <- subset(kommuner, kommuner$areal < 500)
minste <- subset(minste, minste$navn != "Oslo")
ggminste <- ggplot(minste, aes(x=areal, y=befolkning)) +
geom_point(aes(col=fylke, size=tetthet)) +
geom_smooth(method="loess", se=F) +
xlim(c(0,500)) +
ylim(c(0,300000)) +
labs(subtitle = "Areal vs befolkning, kommuner < 500km^2, unntatt Oslo",
y="Befolkning",
x="Areal",
title="Scatterplot")
plot(ggminste)
## `geom_smooth()` using formula 'y ~ x'
I Norge brukes Sainte-Laguës modifiserte metode for å beregne hvor mange mandater hvert parti skal ha.
##Beregne stortingsmandater
library(tidyr)
library(dplyr)
library(writexl)
#Laste inn valglister fra Valgdirektoratet
lister <- read.csv("data/lister21.csv", fileEncoding = "UTF-8")
str(lister)
## 'data.frame': 5174 obs. of 13 variables:
## $ election_path: chr "210001.01.01.000001" "210001.01.01.000001" "210001.01.01.000001" "210001.01.01.000001" ...
## $ valg : chr "Stortingsvalget 2021" "Stortingsvalget 2021" "Stortingsvalget 2021" "Stortingsvalget 2021" ...
## $ valgdistrikt : chr "Østfold" "Østfold" "Østfold" "Østfold" ...
## $ partikode : chr "AAN" "AAN" "AAN" "AAN" ...
## $ partinavn : chr "Alliansen - Alternativ for Norge" "Alliansen - Alternativ for Norge" "Alliansen - Alternativ for Norge" "Alliansen - Alternativ for Norge" ...
## $ display_order: int 2 2 2 2 2 2 2 2 2 2 ...
## $ kandidatnr : int 1 2 3 4 5 6 7 8 9 10 ...
## $ navn : chr "Hans Jørgen Lysglimt Johansen" "Bjørn Inge Johansen" "Jarle Johansen" "Kaspar Johan Birkeland" ...
## $ bosted : chr "Oslo" "Orkland" "Giske" "Ålesund" ...
## $ stilling : chr "" "" "" "" ...
## $ fødselsdato : chr "13.09.1971" "03.08.1970" "14.11.1960" "18.06.1951" ...
## $ alder : int 50 51 60 70 53 57 36 49 71 47 ...
## $ kjønn : chr "Mann" "Mann" "Mann" "Mann" ...
fylkesfordeling <- read.csv("data/partifordeling.csv", sep=";", fileEncoding = "UTF-8")
distriktsres <- fylkesfordeling[c(1,2,7,8,9,10,13)]
names(distriktsres) <- c("fnr", "fylke", "kode", "parti", "pros","ant_velgere", "stemmer")
distriktsres$pros <- gsub(",", "\\.", distriktsres$pros)
distriktsres$pros <- as.numeric(distriktsres$pros)
delingstall <- c(1.4, seq(3,129,2))
delingstall
## [1] 1.4 3.0 5.0 7.0 9.0 11.0 13.0 15.0 17.0 19.0 21.0 23.0
## [13] 25.0 27.0 29.0 31.0 33.0 35.0 37.0 39.0 41.0 43.0 45.0 47.0
## [25] 49.0 51.0 53.0 55.0 57.0 59.0 61.0 63.0 65.0 67.0 69.0 71.0
## [37] 73.0 75.0 77.0 79.0 81.0 83.0 85.0 87.0 89.0 91.0 93.0 95.0
## [49] 97.0 99.0 101.0 103.0 105.0 107.0 109.0 111.0 113.0 115.0 117.0 119.0
## [61] 121.0 123.0 125.0 127.0 129.0
length(delingstall)
## [1] 65
#Antall distriktsmandater pr.fylke
ant.dman <- data.frame(fnr = c(1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20),
man = c(8,18,19,6,5,7,6,5,3,5,13,15,3,7,9,4,8,5,4))
#Lag funksjon som beregner distriktsmandater for hvert fylke
get.fylkesres <- function(f) {
m <- ant.dman[f,2] #Antall mandater i fylke f
fylkesres <- subset(distriktsres, fnr==ant.dman[f,1]) #Hvilke resultater har vi for fylke f?
#Funksjon som regner ut st.Laguë for et bestemt delingstall
stlague <- function(i){
del <- fylkesres$stemmer/delingstall[i]
fylkesres <<- cbind(fylkesres, del)
}
fylkesres <- lapply(1:m, function(i) stlague(i))
fylkesres <- as.data.frame(fylkesres[[m]])
dels <- paste0("del",1:m)
dels <- c("fnr", "fylke","kode", "parti", "pros", "ant_velgere", "stemmer", dels)
names(fylkesres) <- dels
head(fylkesres)
fylkesres <- pivot_longer(fylkesres, cols = starts_with("del")) %>%
arrange(-value)
fylkesres$name <- gsub("del", "", fylkesres$name)
fylkesres$name <- as.integer(fylkesres$name)
fylkesres <- fylkesres[1:m,]
#Finne politikernavn
get.pol <- function(j) {
lister %>% dplyr::filter(valgdistrikt == as.character(fylkesres[j,2]),
partikode == as.character(fylkesres[j,3]),
kandidatnr == as.integer(fylkesres[j,8])) %>%
select(navn)
}
pols <- data.frame(unlist(sapply(1:m, function(j) get.pol(j))))
names(pols) <- "kandidat"
fylkesres <- cbind(fylkesres, pols)
return(fylkesres)
}
#Beregne alle distriktsmandater og lagre dem som Excel-fil
library(writexl)
alle <- lapply(1:19, function(x) get.fylkesres(x))
alle <- do.call("rbind", alle)
write_xlsx(alle, "data/distriktsmandater_2021.xlsx")
Mål: Lage et skript som henter temperaturdata fra Yr og lagrer dem.
library(jsonlite)
library(ggplot2)
library(lubridate)
#Hente data
yrurl <- "https://api.met.no/weatherapi/locationforecast/2.0/complete?altitude=0&lat=60.39299&lon=5.32415"
yr <- fromJSON(yrurl)
#Ta en kikk
#head(yr)
str(yr)
## List of 3
## $ type : chr "Feature"
## $ geometry :List of 2
## ..$ type : chr "Point"
## ..$ coordinates: num [1:3] 5.32 60.39 0
## $ properties:List of 2
## ..$ meta :List of 2
## .. ..$ updated_at: chr "2022-11-07T15:46:47Z"
## .. ..$ units :List of 24
## .. .. ..$ air_pressure_at_sea_level : chr "hPa"
## .. .. ..$ air_temperature : chr "celsius"
## .. .. ..$ air_temperature_max : chr "celsius"
## .. .. ..$ air_temperature_min : chr "celsius"
## .. .. ..$ air_temperature_percentile_10: chr "celsius"
## .. .. ..$ air_temperature_percentile_90: chr "celsius"
## .. .. ..$ cloud_area_fraction : chr "%"
## .. .. ..$ cloud_area_fraction_high : chr "%"
## .. .. ..$ cloud_area_fraction_low : chr "%"
## .. .. ..$ cloud_area_fraction_medium : chr "%"
## .. .. ..$ dew_point_temperature : chr "celsius"
## .. .. ..$ fog_area_fraction : chr "%"
## .. .. ..$ precipitation_amount : chr "mm"
## .. .. ..$ precipitation_amount_max : chr "mm"
## .. .. ..$ precipitation_amount_min : chr "mm"
## .. .. ..$ probability_of_precipitation : chr "%"
## .. .. ..$ probability_of_thunder : chr "%"
## .. .. ..$ relative_humidity : chr "%"
## .. .. ..$ ultraviolet_index_clear_sky : chr "1"
## .. .. ..$ wind_from_direction : chr "degrees"
## .. .. ..$ wind_speed : chr "m/s"
## .. .. ..$ wind_speed_of_gust : chr "m/s"
## .. .. ..$ wind_speed_percentile_10 : chr "m/s"
## .. .. ..$ wind_speed_percentile_90 : chr "m/s"
## ..$ timeseries:'data.frame': 84 obs. of 2 variables:
## .. ..$ time: chr [1:84] "2022-11-07T16:00:00Z" "2022-11-07T17:00:00Z" "2022-11-07T18:00:00Z" "2022-11-07T19:00:00Z" ...
## .. ..$ data:'data.frame': 84 obs. of 4 variables:
## .. .. ..$ instant :'data.frame': 84 obs. of 1 variable:
## .. .. .. ..$ details:'data.frame': 84 obs. of 17 variables:
## .. .. .. .. ..$ air_pressure_at_sea_level : num [1:84] 998 998 999 999 1000 ...
## .. .. .. .. ..$ air_temperature : num [1:84] 8.1 7.8 7.4 7.1 7.5 8.3 8.9 8.8 9 9.1 ...
## .. .. .. .. ..$ air_temperature_percentile_10: num [1:84] 7.3 6.9 6.6 6.1 6.5 7 7.3 7.7 7.7 8.2 ...
## .. .. .. .. ..$ air_temperature_percentile_90: num [1:84] 8.8 8.7 8.3 8.4 8.8 9.2 9.7 10 10 10 ...
## .. .. .. .. ..$ cloud_area_fraction : num [1:84] 63.7 44.6 6.9 29.2 65.4 95.5 71.8 61.1 90.4 100 ...
## .. .. .. .. ..$ cloud_area_fraction_high : num [1:84] 0 0 0 13 2.2 1.8 16.9 5.1 0 3.4 ...
## .. .. .. .. ..$ cloud_area_fraction_low : num [1:84] 19.7 22.8 6.7 20 63.2 95.1 67.9 56.7 55.9 99.8 ...
## .. .. .. .. ..$ cloud_area_fraction_medium : num [1:84] 5.6 0.5 0 0 0 0 6.4 12.9 87.2 100 ...
## .. .. .. .. ..$ dew_point_temperature : num [1:84] 5 4.6 4 4.3 4.5 5.2 5.5 5.4 5.1 5.4 ...
## .. .. .. .. ..$ fog_area_fraction : num [1:84] 0 0 0 0 0 0 0 0 0 0 ...
## .. .. .. .. ..$ relative_humidity : num [1:84] 90.7 89.4 87.6 89.3 88.6 87.4 85.6 85.6 83.1 84.3 ...
## .. .. .. .. ..$ ultraviolet_index_clear_sky : num [1:84] 0 0 0 0 0 0 0 0 0 0 ...
## .. .. .. .. ..$ wind_from_direction : num [1:84] 146 145 143 145 142 ...
## .. .. .. .. ..$ wind_speed : num [1:84] 3.2 3.4 3.6 3.7 4 4.1 4.8 5 4.8 5.4 ...
## .. .. .. .. ..$ wind_speed_of_gust : num [1:84] 5.4 5.8 6.2 6.3 7.2 7.2 8.4 9.1 8.8 9.6 ...
## .. .. .. .. ..$ wind_speed_percentile_10 : num [1:84] 2.3 2.9 3.1 3.1 3.5 3.7 4 4.4 4.4 5.1 ...
## .. .. .. .. ..$ wind_speed_percentile_90 : num [1:84] 3.6 3.7 4.1 4 4.4 4.6 5.2 5.4 5.8 6 ...
## .. .. ..$ next_12_hours:'data.frame': 84 obs. of 2 variables:
## .. .. .. ..$ summary:'data.frame': 84 obs. of 2 variables:
## .. .. .. .. ..$ symbol_code : chr [1:84] "lightrainshowers_day" "lightrainshowers_day" "lightrainshowers_day" "lightrain" ...
## .. .. .. .. ..$ symbol_confidence: chr [1:84] "somewhat certain" "somewhat certain" "certain" "certain" ...
## .. .. .. ..$ details:'data.frame': 84 obs. of 1 variable:
## .. .. .. .. ..$ probability_of_precipitation: num [1:84] 64.3 77.4 89.4 96.4 99.8 100 100 100 100 100 ...
## .. .. ..$ next_1_hours :'data.frame': 84 obs. of 2 variables:
## .. .. .. ..$ summary:'data.frame': 84 obs. of 1 variable:
## .. .. .. .. ..$ symbol_code: chr [1:84] "partlycloudy_night" "partlycloudy_night" "clearsky_night" "fair_night" ...
## .. .. .. ..$ details:'data.frame': 84 obs. of 5 variables:
## .. .. .. .. ..$ precipitation_amount : num [1:84] 0 0 0 0 0 0 0 0 0.2 0.9 ...
## .. .. .. .. ..$ precipitation_amount_max : num [1:84] 0 0 0 0 0 0 0 0.2 0.6 1.4 ...
## .. .. .. .. ..$ precipitation_amount_min : num [1:84] 0 0 0 0 0 0 0 0 0 0.1 ...
## .. .. .. .. ..$ probability_of_precipitation: num [1:84] 3.1 5.4 1.9 0 0 0 1.1 13 44 73.8 ...
## .. .. .. .. ..$ probability_of_thunder : num [1:84] 0.1 0 0 0.1 0.3 0.3 0.2 0.5 0.7 1.2 ...
## .. .. ..$ next_6_hours :'data.frame': 84 obs. of 2 variables:
## .. .. .. ..$ summary:'data.frame': 84 obs. of 1 variable:
## .. .. .. .. ..$ symbol_code: chr [1:84] "partlycloudy_night" "partlycloudy_night" "partlycloudy_night" "partlycloudy_night" ...
## .. .. .. ..$ details:'data.frame': 84 obs. of 6 variables:
## .. .. .. .. ..$ air_temperature_max : num [1:84] 8.9 8.9 9 9.1 9.1 9.6 9.8 9.8 10.2 10.8 ...
## .. .. .. .. ..$ air_temperature_min : num [1:84] 7.1 7.1 7.1 7.5 8.3 8.8 8.8 9 9 9 ...
## .. .. .. .. ..$ precipitation_amount : num [1:84] 0 0 0 0 1.2 1.4 1.6 2 2.3 2 ...
## .. .. .. .. ..$ precipitation_amount_max : num [1:84] 0 0 0 0.8 1.4 2.1 3 4.1 4.5 4.9 ...
## .. .. .. .. ..$ precipitation_amount_min : num [1:84] 0 0 0 0 0.1 0.2 0.3 0.4 0.7 1.1 ...
## .. .. .. .. ..$ probability_of_precipitation: num [1:84] 3 2 1.7 17.7 37.9 49.2 62.9 77.3 89.1 96 ...
#Fikse tidsformatet
tid <- yr$properties$timeseries$time
tid <- gsub("Z", "", tid)
tid <- gsub("T", " ", tid)
tid <- ymd_hms(tid, tz=Sys.timezone())
tid <- tid + 2*60*60
#Finne temperaturene
temp <- yr$properties$timeseries$data$instant$details$air_temperature
#Lag data frame (=regneark)
tempbergen <- data.frame(tid=tid, temp=temp)
#head(tempbergen)
#Lag et plot
tempplot <- ggplot(tempbergen, aes(x=tid, y=temp)) + geom_point() +
xlab("dato") + ylab("temperatur") +
labs(title = "Temperaturvarsel for Bergen")
tempplot
tempplot + geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#Lagre dataene med unikt filnavn
dir.create("data/temp/")
## Warning in dir.create("data/temp/"): 'data\temp' already exists
filnavn <- paste0("data/temp/yrbergen_",Sys.time(),".csv")
filnavn <- gsub(" ", "_", filnavn)
filnavn <- gsub(":", "-", filnavn)
write.csv(tempbergen, filnavn, row.names = FALSE)
#http://christophergandrud.github.io/networkD3/
library(readxl)
library(networkD3)
library(htmlwidgets)
##
## Attaching package: 'htmlwidgets'
## The following object is masked from 'package:networkD3':
##
## JS
library(tidyr)
nettverk <- read_xlsx("data/nettverk.xlsx")
#simple plot
p <- simpleNetwork(nettverk, height="200px", width="200px",
Source = 1, # Kolonnen til source
Target = 2, # Kolonnen til target
linkDistance = 10, # Avstand mellom nodene. Øk verdien for mer rom mellom nodene
charge = -900, # Numerisk verdi som angir enten styrken i frastøtelse (negativt tall) eller tiltrekning (positivt tall)
fontSize = 14, # Størrelse på nodenavn
fontFamily = "serif", # Font
linkColour = "#666", # Farge på strekene, må være felles for hele grafen
nodeColour = "#69b3a2", # Farge på nodene, må være felles for hele grafen
opacity = 0.9, # Nodenes grad av gjennomsiktighet. 0=transparent. 1=ingen transparens
zoom = T # Kan du zoome?
)
p
saveWidget(p, file="data/enkelgraf.html")
#Litt mer avansert variant
fra <- data.frame(nettverk[,1])
fra <- as.character(unlist(fra))
til <- data.frame(nettverk[,2])
til <- as.character(unlist(til))
nodefactors <- c(fra, til)
nodefactors <- as.factor(sort(unique(nodefactors)))
source <- match(fra, levels(nodefactors)) - 1
target <- match(til, levels(nodefactors)) - 1
links <- data.frame(Source = source, Target = target)
noder <- data.frame(name=nodefactors, group=1:length(nodefactors), size=20)
nytt.nettverk <- forceNetwork(Links = links,
Nodes = noder,
Source= "Source",
Target = "Target",
Group = "group",
Nodesize = "size",
NodeID = "name",
charge = -500,
linkDistance = 100,
zoom = T,
opacity = 0.9,
fontSize=14,
fontFamily = "Arial",
opacityNoHover = 1,
legend = FALSE,
linkWidth = 2,
linkColour = "#767576"
#width=600
)
nytt.nettverk
saveWidget(nytt.nettverk, file="data/nytt_nettverk.html")