Mit highcharter und Quandl interaktives Kreisdiagramm erstellen

Das R-Package highcharter ist ein Wrapper der Javascript-Library Highcharts. Damit lassen sich relativ einfach Grafiken und Diagramme erzeugen, die in Form von Tooltips unter dem Mauszeiger den jeweiligen Wert anzeigen.
Als Beispiel sollen die Tagesschwankungen des Kurses der digitalen Kryptowährung Bitcoin in einem Kreis- oder Polardiagramm dargestellt werden. Unter dem Mauszeiger blenden sich dann das Datum, der Eröffnungs- und Schlusskurs sowie die Differenz ein. Die Daten werden mit dem R-Package Quandl eingelesen, das eine API zu www.quandl.com darstellt, einer Website mit Finanz- und Wirtschaftsdaten. Highcharts bzw. highcharter ist schließlich für die Grafik zuständig.

library(highcharter)
library(Quandl)
library(dplyr)
library(lubridate)
df=Quandl("BCHARTS/BTCDEEUR")
df %>% 
  arrange(Date) %>% 
  mutate(tmstmp = datetime_to_timestamp(Date)) -> df
last_date=max(df$Date)
if (day(last_date+1)==1) date_to=last_date else
  date_to=ymd(paste(year(last_date), month(last_date),1, sep="-"))-1
date_from=ymd(paste(year(date_to)-1, month(date_to)+1,1, sep="-"))
df %>% filter(Date>=date_from, Date<=date_to) -> df
bitliste <- df %>% 
  mutate(Variation = round(Close - Open, digits = 1),
         color = ifelse(Variation>=0, "green", "red"),
         y = Variation) %>% 
  select(x = tmstmp, y, variation = Variation, name = Date, color, open = Open, close = Close) %>% 
  list_parse()
x <- c("Open", "Close", "Variation")
y <- sprintf("{point.%s}", tolower(x))
tooltp <- tooltip_table(x, y)
hc <- highchart(width = 630, height = 450) %>% 
  hc_title(text = "Bitcoin Exchange Rate (BTC vs. EUR)") %>% 
  hc_subtitle(text = "Tägliche Variation auf bitcoin.de. Letzte 12 Monate")%>% 
  hc_chart(
    type = "column",
    polar = TRUE) %>%
  hc_plotOptions(
    series = list(
      stacking = "normal",
      showInLegend = FALSE)) %>% 
  hc_xAxis(
    gridLineWidth = 0.8,
    type = "datetime",
    labels = list(format = "{value: %b}")) %>% 
  hc_yAxis(showFirstLabel = FALSE) %>% 
  hc_add_series(data = bitliste) %>% 
  hc_add_theme(hc_theme_sandsignika()) %>% 
  hc_exporting(enabled = TRUE) %>%
  hc_tooltip(useHTML = TRUE,
             headerFormat = as.character(tags$small("{point.x:%d %B, %Y}")),
             pointFormat = tooltp)
hc

Das Skript: Benötigt werden die Libraries highcharter für das Diagramm, Quandl für das Einlesen der Daten, dplyr für das Bearbeiten des Data Frames und lubridate für den vereinfachten Umgang mit Datumsangaben. Mehr zu dplyr unter dplyr. Die Zeile df=Quandl("BCHARTS/BTCDEEUR") liest die Bitcoin-Daten ein. arrange und mutate bringen den Data Frame sogleich in Form. Es folgt ein Zurechtzupfen der Datumsangaben, bevor das Ganze in eine Liste namens bitliste überführt wird. Anschließend werden die Angaben für die Tooltips definiert.
Es folgt der grafische Teil mit highcharter: Definiert werden zunächst Titel, Subtitel und die Art des Diagramms. polar = TRUE sorgt für die kreisförmige Darstellung. Die Daten werden mit hc_add_series(data = bitliste) %>% eingefügt und die Grafik schließlich mit hc erzeugt. Mehr zu highcharter hier.