Kombiner R og Highcharts
Med veldig enkel kode kan du handsame dine data med R og publisere dei med Highcharts.
Lat meg seie det med ein gong: Javascript-baserte Highcharts frå Vik i Sogn er vakkert, men ikkje gratis. I BT har vi avtale, du må og ordne deg viss du vil ta Highcharts i bruk.
Når det er sagt: Vi er veldig glade i Highcharts fordi det framstiller data så pent. Men for ein ikkje-programmerar som meg har terskelen for å bruke Highcharts vore høg. Det kan vere vanskeleg å få dataene på forma som Highcharts krev. Og det blir mykje mikkmakk og manuell jobbing i Excel og i kodevindauget.
Det er her R kjem ridande på sin kvite hest. Eg har skrive ein del om R, men hovudankepunktet har heile tida vore: Korleis får du R interaktivt?
Vel, det er tusen måtar å få R interaktivt på, og ein av dei er R-pakka rHighcharts.
Takk til Thomas Reinholdsson som har laga ein enkel instruksjon til rHighcharts. Eg testa det på to datasett. Her er det første: Røystegjevinga i Melodi Grand Prix 1982.
##Først lastar eg inn dei naudsynte pakkane:
library(devtools)
install_github(‘rHighcharts’, ‘metagraf’)
require(rHighcharts)
# Så hentar eg inn data.
x <- read.csv('mgp82.csv', header=TRUE, sep=",", stringsAsFactors=FALSE)
# Kolonne1 vil eg helst ha som radnamn, slik at dei syner på x-aksa i grafen. Det fiksar eg slik:
rownames(x) <- x$X
x$X <- NULL
# Så, rosinen i pølsa. Du angjev rett og slett berre graftype, tittel, forklaring på x- og y-akse:
a <- rHighcharts:::Chart$new()
a$chart(type = "column")
a$title(text = "MGP-stemmer 1982")
a$xAxis(categories = rownames(x))
a$yAxis(title = list(text = "poeng"))
#Skubb data inn i grafen
a$data(x)
# Når eg no køyrer koden, får eg resultatet under. Ein interaktiv graf som viser korleis kvart land røysta i 1982. (Berre skjermdump her.)
> a
Det er endå lettare å lage eit paikart. Her har eg henta eit datasett frå SSB. Det viser fedrelandet til innvandrarar i Norge gjennom tidene.
Eg vil lage ein pai med fordelinga slik ho var i 1993.
# Les inn data
innv <- read.csv('innv.csv', header=TRUE, sep=";", stringsAsFactors=FALSE)
# Fiks data
innv <- na.omit(innv) #Når eg handsamar data i excel, hender det at det kjem ein haug NA-radar med. Denne linja fjernar dei.
rownames(innv) <- innv$X
innv$X <- NULL
#Kolonnenamna får «X» framfor årstal, R godtar ikkje nummer som kolonnenamn. Dette fiksar problemet.
colnames(innv) <- substr(colnames(innv), 2,5)
# Eg fekk nokre æøå-issues, det er greitt å fikse med funksjonen gsub().
rownames(innv) <- gsub("\xaf", "Ø", rownames(innv))
rownames(innv) <- gsub("\xbf", "ø", rownames(innv))
# Lage paikart
a <- rHighcharts:::Chart$new()
a$title(text = "Innvandrere i 1993")
a$data(x = rownames(innv), y = innv$"1993", type = "pie", name = "Antall")
> a