ダッシュボードにグラフを描く場合、インタラクティブなグラフを用いることで読み手に強いインパクトを与えることができます。 R ではインタラクティブなグラフを描けるshiny
がありますが、サーバを用意しなければならず敷居が低いとは言えません。そこで、クライアント側だけで処理できる HTML Widgets がおすゝめです。HTML Widgets
はJavaScriptを用いた可視化のためのフレームワークです。
Packages and Datasets
本ページではR version 3.4.4 (2018-03-15)の標準パッケージ以外に以下の追加パッケージを用いています。
Package | Version | Description |
---|---|---|
d3heatmap | 0.6.1.2 | Interactive Heat Maps Using ‘htmlwidgets’ and ‘D3.js’ |
dygraphs | 1.1.1.6 | Interface to ‘Dygraphs’ Interactive Time Series Charting Library |
highcharter | 0.5.0 | A Wrapper for the ‘Highcharts’ Library |
metricsgraphics | 0.9.0 | Create Interactive Charts with the JavaScript ‘MetricsGraphics’ Library |
rbokeh | 0.5.0 | R Interface for Bokeh |
また、本ページでは以下のデータセットを用いています。
Dataset | Package | Version | Description |
---|---|---|---|
fdeaths | datasets | 3.4.4 | Monthly Deaths from Lung Diseases in the UK, females |
mdeaths | datasets | 3.4.4 | Monthly Deaths from Lung Diseases in the UK, males |
mtcars | datasets | 3.4.4 | Motor Trend Car Road Tests |
nhtemp | datasets | 3.4.4 | Average Yearly Temperatures in New Haven |
HTML Widgets
HTML Widgetsはhtmlwidgets
パッケージをベースにしたJavaScriptを用いた可視化パッケージ群です。メトリクス分析では以下のようなパッケージが向いていると思います。
パッケージ名称 | 特徴 | CRAN |
---|---|---|
DT | DataTable を利用したテーブル(表)表示用 |
Yes |
plotly | ggplot2 オブジェクトを簡単にインタラクティブ化 |
Yes |
dygraphs | 時系列グラフに特化したパッケージ | Yes |
highcharter | Highcharts という可視化ライブラリを利用 |
Yes |
d3heatmap | D3 という可視化ライブラリを利用 |
Yes |
rbokeh | Bokeh という可視化ライブラリを利用 |
Yes |
metricsgraphics | D3 を利用した散布図、折れ線グラフが描ける |
Yes |
DataTable
DT
パッケージはソート、検索、ページ送りをサポートしているインタラクティブなテーブル描画を行うパッケージで、様々な装飾が可能です。本blogで利用しているhugoテーマとは相性が悪いため、実際の表示は こちらのサイト で確認してください。
Plotly
plotly
パッケージはオープンソースなグラフィックライブラリで、ggplot2
で描いたグラフをインタラクティブなグラフに変換してくれる関数も提供しています。概要は「 インタラクティブなグラフ 」をご覧ください。
(mtcars %>%
ggplot2::ggplot(ggplot2::aes(x = hp, y = mpg, colour = as.factor(gear))) +
ggplot2::geom_point()) %>%
plotly::ggplotly()
Dygraphs
dygraph
パッケージは時系列データの描画に特化したパッケージです。描画にはzoo
クラスを拡張した xts
クラス(一種のマトリクス型)を用います。下図のようにグラフの値が読み取れるだけでなく、任意の区間に絞り込んで表示することが可能ですので、長期間のデータを表示するのに向いています。
nhtemp %>%
xts::as.xts() %>%
dygraph(main = "New Haven Temperatures") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
複数のデータを表示する場合はカラム方向にデータを結合します。
cbind(mdeaths, fdeaths) %>%
xts::as.xts() %>%
dygraph(main = "Monthly Deaths from Lung Diseases in the UK") %>%
dyRangeSelector()
xtsクラス
xts
クラスの詳細については別の機会に説明しますが、以下のような属性を持ったマトリクス型の変数です。
nhtemp %>% xts::as.xts() %>% str()
## An 'xts' object on 1912-01-01/1971-01-01 containing:
## Data: num [1:60, 1] 49.9 52.3 49.4 51.1 49.4 47.9 49.8 50.9 49.3 51.9 ...
## Indexed by objects of class: [Date] TZ: UTC
## xts Attributes:
## NULL
D3Heatmap
d3heatmap
パッケージはインタラクティブなヒートマップを描画するパッケージです。提供される機能自体はシンプルですが、分類数が多い場合には重宝すると思われます。描画対象となるデータは全ての列が数値データであるものに限られます。
d3heatmap::d3heatmap(mtcars, scale = "column", colors = "Blues")
HighCharter
highcharter
パッケージはHighchartsというJavaScriptライブラリのラッパー関数を提供するパッケージです。マニュアルが貧弱なためHigchartsのAPIを熟知していないと使えませんので、あまりおすゝめできません。