highcharterでの可視化 ~時系列データ~

最近、ggplot以外での可視化ライブラリを探していたが、今回触れてみたhighcharterがかなり良いのでまとめておく。

www.highcharts.com

jkunst.com

前処理

library(tidyverse)
library(highcharter)
library(xts)
stock = read.csv("all_stocks_5yr.csv")
fang = filter(stock, Name %in% c("AAPL", "AMZN", "FB", "NFLX", "GOOGL"))
fang$date = as.Date(fang$date)
fang = filter(fang, date > "2016-01-01")

www.kaggle.com

データはkaggleに掲載されている上記のS&P500の株価データを用います。代表としてApple(AAPL),Amazon(AMZN), Facebook(FB), Netflix(NFLX), Alphabet(GOOGL)の2016年1月から2018年2月までの約2年のデータを用います。

hchart(): tibbleデータ可視化

ベースとなる構文

hchart(filter(fang, Name == "GOOGL"), 
       hcaes(x = date, y = close),
       type = "line", color = "red")

f:id:kokiando:20190526122738g:plain

tibbleデータを可視化使用となるとこの基本の関数がもっとも便利。引数colorでプロットの色を帰ることができる。かなりggplotとの共通点が多く、同様にデータを指定し、hcaes(x, y, ...)で詳細部分を指定いく。

OHLCデータ

hchart(filter(fang, Name == "GOOGL"), 
       hcaes(x = date, y = close),
       type = "candlestick")

f:id:kokiando:20190526123104g:plain

金融データの可視化をメインに行うパッケージなだけに、引数type = "line"以外にも便利なオプションが揃っている。上ではローソク足チャートを表示する"candlestick"を試した。

複数のデータをプロットする

hchart(fang, 
       hcaes(x = date, y = close, group = Name),
       type = "line")

f:id:kokiando:20190526123441g:plain

複数のデータを同時に描画するためにはgroupで指定する。上の例のように表示したくないデータをクリックすると、勝手にプロットの見栄えを最適化してくれる。この部分が自分的には気に入っている部分。

highchart(): xtsデータの可視化

google = fang %>% 
  filter(Name == "GOOGL") %>% 
  select(date, close)
amazon = fang %>% 
  filter(Name == "AMZN") %>% 
  select(date, close)
amazon_xts = as.xts(amazon$close, amazon$date)
google_xts = as.xts(google$close, google$date)

ベースとなる構文

highchart(type = "stock") %>% 
  hc_add_series(amazon_xts)

f:id:kokiando:20190526125113g:plain

type = "stock"と記述するだけで、hchart()関数ではサポートされていなかった様々な機能が使える。主な違いは期間の指定や、スパンの指定などを容易に行えることだ。

複数のデータの可視化

highchart(type = "stock") %>% 
  hc_add_series(amazon_xts, color = "yellow", name = "AMAZON") %>% 
  hc_add_series(google_xts, color = "red", name = "GOOGLE")

f:id:kokiando:20190526125526g:plain

複数のデータの可視化はレイヤーごとにhc_add_series()を重ねていく。