RFinanceJとdyGraphsでチャラい可視化

はじめに

RFinanceJを使えば簡単に金融データがとれて素敵です.

そして, dygraphsでチャラい可視化ができるみたいです.

teramonagiさんの記事を参考に, 触ってみます.

パッケージ読み込み

library(knitr)
opts_chunk$set(prompt=TRUE, warning=FALSE, error=FALSE, results = "asis", comment=NA, tidy=FALSE, message=FALSE)
library(dplyr)
library(RFinanceJ)
library(zoo)
library(xts)
library(dygraphs)

カッコイイ時系列プロット

まず, チュートリアルページを参考に, それっぽいグラフを作ってみます.

> library(dygraphs)
> ## ts クラスのデータを与えます. 
> mdeaths %>% class

[1] “ts”

> lungDeaths <- cbind(mdeaths, fdeaths)
> lungDeaths %>% class

[1] “mts” “ts” “matrix”

> dygraph(lungDeaths)

なるほど. マウスを当てると値が出てくるの凄い(小並感).

スライドバーで範囲を調整

dyRangeSelector()を与えると, かっこよくなります.

> dygraph(lungDeaths) %>%
+   dyRangeSelector()

下のバーで期間指定がインタラクティブにできます.

なるほどチャラいです.

dataframeをxtsクラスに変換してdygraph

好きなデータでdygraphしてみたいです.

手持ちの時系列データが入っているdataframeを使ってみたいです.

しかし, dygraphはdataframeではダメで, xtsという謎形式に変換する必要があります.

Dateカラムがあるなら, data.frameに変換してからread.zooしてas.xtsすればいいみたいです.

よく分かりませんが, とりあえず動きますのでやってみます.

適当な会社の株価のデータを取ってきます.

> dat_nssol <- rfj('2327', start_date="2014-6-1", end_date="2014-12-01")
> head(dat_nssol)

Source: local data frame [6 x 7]

    Date Open High  Low Close Volume AdjClose

1 2014-12-01 3155 3225 3155 3185 189800 3185 2 2014-11-28 3135 3150 2980 3125 279600 3125 3 2014-11-27 3135 3160 3115 3145 108500 3145 4 2014-11-26 3120 3180 3105 3155 235900 3155 5 2014-11-25 3165 3175 3110 3125 184200 3125 6 2014-11-21 3195 3215 3140 3165 150600 3165

時系列データをグラフにしてみます.

> dat = dat_nssol %>% 
+   select(-Volume, -AdjClose) %>% 
+   as.data.frame %>% 
+   read.zoo %>% as.xts
> ## 始値, 終値, 高値, 安値
> dat %>% 
+   dygraph() %>% 
+   dyRangeSelector()

株価が上がっていますね. いい会社なのでしょう.

幅で色を付ける

高値と安値の間, というグラフを作りたいです.

dySeriesに, 安値, 終値, 高値の順番で列名を与えればいいみたいです.

> dat_nssol %>% 
+   select(Date, High, Low, Close) %>% 
+   as.data.frame %>% 
+   read.zoo %>% as.xts %>% 
+   dygraph(main = "Stock Price (nikkei2327)") %>% 
+   dySeries(c("Low", "Close", "High")) %>% 
+   dyRangeSelector()

期間に影をつける

dyShadeingに期間と色を与えればOK.

> dat_nssol %>% 
+   select(Date, High, Low, Close) %>% 
+   as.data.frame %>% 
+   read.zoo %>% as.xts %>% 
+   dygraph(main = "Stock Price (nikkei2327)") %>% 
+   dySeries(c("Low", "Close", "High")) %>% 
+   dyRangeSelector() %>% 
+   dyShading(from = "2014-07-01", to = "2014-09-01", color = "#CCEBD6")

イベントの発生

dyEventに日付を与えればOK.

> dat_nssol %>% 
+   select(Date, High, Low, Close) %>% 
+   as.data.frame %>% 
+   read.zoo %>% as.xts %>% 
+   dygraph(main = "Stock Price (nikkei2327)") %>% 
+   dyRangeSelector() %>% 
+   dySeries(c("Low", "Close", "High")) %>% 
+   dyShading(from = "2014-07-01", to = "2014-09-01", color = "#CCEBD6") %>% 
+   dyEvent(date = "2014-10-21", "Report", labelLoc="bottom")

感想

チャラい.

knitrbootstrapと合わせようとすると, グラフが表示されません.

どうしましょう.