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