Rを用いてウェブベースのインタラクティブなグラフを作成し,より高速に深くデータと対話するための手法を身につけられる一冊。
本書は、Rユーザがplotlyを用いてWebベースのインタラクティブなグラフを作成し、活用するための書籍である。
インタラクティブなグラフはデータの探索や詳細の確認がしやすく、plotlyをマスターすれば魅力的でインタラクティブで再現可能なグラフを素早く作成することができる。
グラフの作成者自身が探索的なデータ分析に取り組めるだけでなく、グラフデータを共有しやすくなり、第三者がデータを探索し詳細を確認することも容易になる。インタラクティブなグラフを使いこなせるようになれば、データ分析のワークフローは大きく変わり、データとより高速に深く対話できるようになるだろう。
原著者はplotlyパッケージの開発に携わっており、本書ではその使い方を基礎から学ぶことができる。実行するコードサンプルの説明に留まらず、plotlyの基礎となるフレームワーク(plotly.js)やその動作の仕組み、Rのエコシステムとの組み合わせなど、グラフのカスタマイズや応用につながる基礎知識を身に付けることができる。
なお、第4章ではplotlyとshinyを組み合わせたアプリケーション開発を扱っている。インタラクティブ性に強みを持つ両パッケージを組み合わせることで、より高度で便利なアプリケーションを作成することができる。たくさんの例を挙げて説明しているので、発展的なshinyアプリを作成したい方にもぜひ手に取っていただきたい。
本書で扱う内容
* 静的なggplot2グラフをインタラクティブで動的なグラフに変換
* 複数のグラフを連携させ、アニメーションやリンクする可視化を実現
* plotlyグラフをshinyアプリ上で用いてインタラクティブ性のより高いアプリを作成
* 連続、離散、高次元データを可視化するためのベストプラクティス
* 地理空間データを可視化する多くの方法を解説
[原著:Interactive Web-Based Data Visualization with R, plotly, and shiny]
1 導入
1.1 なぜRとインタラクティブなグラフなのか
1.2 本書で学ぶこと
1.3 本書で学ばないこと
1.3.1 ウェブ技術
1.3.2 d3js
1.3.3 ggplot2
1.3.4 可視化によるデータ分析
1.3.5 データ可視化のベストプラクティス
1.4 読み進めるうえでの前提条件
1.5 サンプルコードの実行環境
1.6 困った時やさらに学習したい時
1.7 謝辞
1.8 本書のデータに関する情報
第I部 グラフの作成
2 概要
2.1 plot_ly()の紹介
2.2 plotly.jsの紹介
2.3 ggplotly()の紹介
3 グラフ作成の基礎
3.1 マーカー(散布図)
3.1.1 アルファブレンディング(透明度)
3.1.2 カラー(色)
3.1.3 シンボル(形状)
3.1.4 輪郭線(ストローク)とその幅(スパン)
3.1.5 サイズ
3.1.6 ドットプロットとエラーバー
3.2 折れ線グラフ
3.2.1 線の種類
3.2.2 セグメント
3.2.3 密度プロット
3.2.4 平行座標プロット
3.3 ポリゴン
3.3.1 リボン
4 地図
4.1 標準マップ
4.1.1 概要
4.1.2 コロプレス図
4.2 カスタムマップ
4.2.1 sfパッケージ
4.2.2 カートグラム
5 棒グラフとヒストグラム
5.1 複数の数値変数の分布
5.2 複数の離散変数の分布
6 箱ひげ図
7 2次元ヒストグラム
7.1 plotly.jsでビン計算を行うアプローチ
7.2 Rでビン計算を行うアプローチ
7.3 カテゴリ変数軸
8 3次元グラフ
8.1 マーカー(散布図)
8.2 パス(データの並び順に点を繋げる)
8.3 ライン(x軸の値順に点を繋げる)
8.4 軸の編集
8.5 曲面
第II部 グラフのパブリッシュ
9 はじめに
10 HTMLへの保存・埋め込み
11 静止画の保存
11.1 コードによる静止画の保存
11.2 ブラウザを使った静止画の保存
11.3 静止画のサイズ変更
12 静止画とその保存形式の編集
第III部 複数のグラフを用いた表現
13 複数グラフの配置
13.1 plotlyオブジェクトの配置
13.1.1 subplotの再帰的な結合
13.1.2 その他のアプローチとsubplotの応用
13.2 htmlwidgetsの配置
13.2.1 flexdashboard
13.2.2 Bootstrapのグリッドレイアウト
13.2.3 CSSフレックスボックス
13.3 グループ数の多いスモールマルチプルへの対応
14 アニメーショングラフ
14.1 アニメーションAPI
14.2 アニメーション化可能なグラフ
第IV部 グラフの連携
15 はじめに
16 クライアントサイドでのグラフの連携
16.1 グラフィカルクエリ
16.2 ハイライト vs フィルタ
16.3 アニメーショングラフの連携
16.4 グラフィカルクエリの実践例
16.4.1 スモールマルチプル
16.4.2 統計的トレースタイプの活用
16.4.3 地理空間データ
16.4.4 他のhtmlwidgetsとの連携
16.4.5 一般化ペアプロット
16.4.6 診断プロット
16.4.7 リスト列をキーにしたグラフィカルクエリ
16.5 グラフィカルクエリの限界
17 shinyによるサーバーサイドを使ったグラフの連携
17.1 shinyにplotlyを組み込もう
17.1.1 shinyの基礎
17.1.2 renderPlotly()の詳細(非表示,サイズ調整など)
17.2 plotly入力イベントの活用
17.2.1 ドラッグイベント
17.2.2 3次元グラフでのイベント
17.2.3 編集イベント
17.2.4 レイアウトとトレースを変更するイベント
17.2.5 イベントソースの特定
17.2.6 イベントによるリアクティブ式の再実行条件
17.2.7 離散的な軸への対応
17.2.8 イベントから得たデータの保持と管理
17.3 アプリのパフォーマンス改善
17.3.1 plotlyグラフの部分的な変更
17.3.2 部分的な変更の活用例
17.4 shinyを使った発展的なアプリケーション
17.4.1 ドリルダウンの実装
17.4.2 クロスフィルタの実装
17.4.3 ドラッグ可能な範囲選択
17.5 終わりに
第V部 JavaScriptによるイベントハンドリング
18 はじめに
19 JSONの基礎
19.1 JavaScriptでの代入
19.2 RオブジェクトからJSONへの変換
20 イベントハンドラを自作する
21 customdata属性の活用
22 ウェブ技術の活用
22.1 基本的なウェブ技術の利用
22.2 モダンなJavaScriptとReactの活用
第VI部 その他のトピック
23 plotlyは無料かつ安全に使えるのか?
24 パフォーマンスを向上させる
25 ツールチップの制御
25.1 plot_ly()のツールチップ
25.2 ggplotly()のツールチップ
25.3 ツールチップのスタイルを変更
26 モードバーの制御
26.1 モードバー全体の削除
26.2 plotlyロゴの削除
26.3 指定したボタンの削除
26.4 カスタムボタンの追加
26.5 指定したボタンのみの表示
26.6 静止画ダウンロードボタンの詳細設定
27 色の指定方法
28 マーカーの形状とグリフ
29 グラフに画像を埋め込む
30 言語の切り替え
31 LaTeX形式の描画
31.1 MathJaxの注意点
32 パイプ演算子による処理フローの拡張
33 ggplotly()の改善
33.1 レイアウトの変更
33.2 データ(トレース)の変更
33.3 集計後データの活用
34 カスタムgeom_*()のplotlyでの利用
参考文献
索 引