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()
100200300101520253035
345hpmpgas.factor(gear)

 

Dygraphs

dygraphパッケージは時系列データの描画に特化したパッケージです。描画にはzooクラスを拡張した xts クラス(一種のマトリクス型)を用います。下図のようにグラフの値が読み取れるだけでなく、任意の区間に絞り込んで表示することが可能ですので、長期間のデータを表示するのに向いています。
 

nhtemp %>% 
  xts::as.xts() %>% 
  dygraph(main = "New Haven Temperatures") %>% 
  dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
New Haven Temperatures
48
49
50
51
52
53
54
55
1920
1930
1940
1950

 
複数のデータを表示する場合はカラム方向にデータを結合します。
 

cbind(mdeaths, fdeaths) %>% 
  xts::as.xts() %>%
  dygraph(main = "Monthly Deaths from Lung Diseases in the UK") %>% 
  dyRangeSelector()
Monthly Deaths from Lung Diseases in the UK
mdeaths
fdeaths
500
1000
1500
2000
2500
Jan 1974
Jan 1975
Jan 1976
Jan 1977
Jan 1978
Jan 1979

 

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")
40112.4653.7320.0121.597120.141022.144.43516.72691120.341112.323.85418.6122.89310841122.784.11418.621.410912140123.153.92422.922.895140.841121.5133.77516.930.411395.160143.443.92418.319.2123167.660143.443.92418.917.8123167.661042.8753.9417.022111016061042.623.9416.462111016040123.193.6942024.462146.761062.773.62515.519.717514541112.24.08419.4732.46678.741111.9354.08418.927.3667941111.8354.22419.933.96571.141121.6154.93418.5230.45275.780033.733.07317.617.3180275.880034.073.07317.416.4180275.880033.783.0731815.2180275.880023.522.76316.8715.515031880023.4353.15317.315.215030460113.2153.08319.4421.411025860113.462.76320.2218.110522580043.573.21315.8414.324536080043.843.73315.4113.324535081043.174.22514.515.826435180023.8453.08317.0519.217540080023.443.15317.0218.717536080045.252.93317.9810.420547280045.4243317.8210.421546080045.3453.23317.4214.723044081083.573.54514.615335301cylamvscarbwtdratgearqsecmpghpdispToyota CoronaPorsche 914-2Datsun 710Volvo 142EMerc 230Lotus EuropaMerc 280Merc 280CMazda RX4 WagMazda RX4Merc 240DFerrari DinoFiat 128Fiat X1-9Toyota CorollaHonda CivicMerc 450SLMerc 450SEMerc 450SLCDodge ChallengerAMC JavelinHornet 4 DriveValiantDuster 360Camaro Z28Ford Pantera LPontiac FirebirdHornet SportaboutCadillac FleetwoodLincoln ContinentalChrysler ImperialMaserati Bora

 

HighCharter

highcharterパッケージはHighchartsというJavaScriptライブラリのラッパー関数を提供するパッケージです。マニュアルが貧弱なためHigchartsのAPIを熟知していないと使えませんので、あまりおすゝめできません。