Mit highcharter auf die Javascript-Library highcharts zugreifen

Interaktive Grafiken sind normalerweise mit R nicht möglich. Selbst ggplot2 bietet keine solche Möglichkeit. Das gelungene Package highcharter ist ein Wrapper der Javascript-Library highcharts. Damit lassen sich einfach und mit wenig Code interaktive Charts, Karten und vieles mehr erstellen.
Um die Funktionsweise zu verdeutlichen, soll ein einfaches Chart erstellt werden, dass die Schlusskurse des DAX für das Jahr 2016 erstellt. Unter dem Mauszeiger erscheinen dann interaktiv das Datum und der dazugehörige Wert. Die zugrunde liegende Excel-Tabelle kann hier heruntergeladen werden.

library(highcharter)
library(dplyr)
library(gdata)
daten <- read.xls("daten/dax.xlsx", head = T, skip = 1)
daten <- daten %>%
  filter(Schluss != "" & Schluss != "-") %>%
  select(Datum, Schluss) %>%
  arrange(Datum)
daten$Schluss <- gsub(",", "", daten$Schluss, fixed=TRUE)
daten$Schluss <- as.numeric(as.character(daten$Schluss)) 
hcoptslang <- getOption("highcharter.lang")
hcoptslang$thousandsSep <- ""
options(highcharter.lang = hcoptslang)
hc <- highchart(debug = TRUE, width = 630, height = 450) %>% 
  hc_exporting(enabled = TRUE) %>%
  hc_xAxis(categories = daten$Datum) %>% 
  hc_add_series(name = "Kurs", data = daten$Schluss) %>% 
  hc_yAxis(type = "linear") %>%
  hc_title(text = "Dax Schlusskurse 2016") %>%
  hc_legend(enabled = FALSE) 
hc

Das Skript: Im ersten Schritt werden die Libraries geladen. Neben highcharter ist dplyr nötig wegen der Pipe-Funktion und gdata um Excel-Tabellen einlesen zu können. Mehr zu dplyr und Piping ist unter dplyr zu lesen. Dann wird die Excel-Tabelle „dax.xlsx“ eingelesen, wobei die erste Reihe ausgelassen wird (skip = 1). Der Dataframe wird anschließend mit filter von ungültigen Reihen befreit, mit select auf die benötigten Spalten reduziert und mit arrange nach dem Datum sortiert.
Die nächsten beiden Zeilen befreien die Spalte „Schluss“ von den Kommas, die die Tausenderstellen markieren, und wandeln die Spalte in den Typ „numeric“ um. Die folgenden drei Zeilen sind kosmetischer Natur und verändern den Default-Wert für den Tausender-Separator, welcher ein Leerzeichen ist. Das ist zwar international, aber unschön.
Nun kommt das Chart an die Reihe. Es ist recht simpel: highchart(debug = TRUE, width = 630, height = 450) erzeugt das Chart in den gewünschten Maßen. hc_exporting(enabled = TRUE) %>% blendet das Export-Menü ein und hc_legend(enabled = FALSE) die Legende aus. Die x-Achse erhält mit hc_xAxis(categories = daten$Datum) das Datum zugewiesen, Einteilung und Darstellung erfolgen automatisch. hc_yAxis(type = "linear") erzeugt eine lineare y-Achse. Alternativen sind logarithmisch oder auch multiple y-Achsen. hc_add_series(name = "Kurs", data = daten$Schluss) übergibt die eigentliche Datenreihe und einen Namen, und hc_title legt die Überschrift fest. Das alles wird hc zugewiesen und anschließend als interaktive HTML-Seite ausgegeben.
Was sonst noch alles möglich ist, zeigt diese Webseite.