HTML Widgets
Text Update: 11/10, 2018 (JST)

ダッシュボードにグラフを描く場合、インタラクティブなグラフを用いることで読み手に強いインパクトを与えることができます。 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を熟知していないと使えませんので、あまりおすゝめできません。