Shinyで作った確率分布を動かせるページを, NVD3.jsでヌルヌルでインタラクティブなグラフにしました。そしてShinyでD3.jsを使う方法3つ。
今回のブログの内容を、TokyoR#45で発表しました。 上は、その時の発表資料です。
先日、Shinyを使った確率分布を動かせるページを作りました。
Shinyで確率分布を動かして遊べるページ作った - Dimension Planet Adventure 最終章 最終話『栄光なる未来』
そのときはggplot2を使ってグラフを書いていましたが、 それを全てNVD3.jsで作りなおしました!! 少し動作に時間がかかるのが難点ですが、 ヌルヌル動くインタラクティブな操作ができるようになって、 見た目的にちょっと面白いものになっています。
果たしてどれくらいヌルヌルなのか!?
以下のgifをご覧ください!!
......あんまりヌルヌルじゃないですが、
これは僕が持っているスクリーンショットアプリのgifがしょぼいだけであり、
実際はもっとヌルヌルです!!
↓ 直接アプリでご覧になって、ヌルヌル動かしてください!!
いろいろな確率分布のパラメータをいじくるアプリ @ksmzn #Shiny
ShinyでD3.jsを使う方法。
軽く調べたところ、3つほど方法がありました。
1. rChartsを使う
これがおそらく最もカンタンな方法です。
rChartsはRで手軽にインタラクティブなグラフを描画できるパッケージで、JavaScript の可視化ライブラリを用いています。
rChartsのクイックスタートのページにも ShinyでrChartsを用いる方法が書いてあり、 それをカスタマイズするのが最もラクです。
僕も最初はこの方法で書いていたのですが、
すごく重くてなかなかグラフが描画されないという問題があり、断念しました。
この方法は、単純なシングルページで使う分には全く問題がないのですが、
僕のアプリのようなnavbarPageを使った複数のページにグラフを載せるようなアプリの場合には
辛かったです。
とはいえ、ほとんどのパターンではこの方法で良いと思われます。
2. d3Networkを使う
ネットワーク図やデンドログラムなどを描画したい場合は、 d3Networkパッケージを使う方法もあるようです。
ただ、今回の目的には適していないため、僕は試しておりません。
このページ↓を見る限り、なかなか便利そうです。
Shinyでもd3.jsを容易に使えるd3Networkパッケージを試した - でたぁっ 感動と失敗の備忘録
追記
TokyoRの会場で、上記ブログ著者のid:mitsunori さんからnetworkD3というパッケージを教えて頂きました。
名前が似てますが、d3Networkの後継っぽいです。
詳細はid:mitsunori さんの記事をご覧ください
3. 直接D3.jsを使う
結局、この方法を採用しました。
正確に言えば、僕のアプリで直接使ったのは(NVD3.js)http://nvd3.org/です。
この方法を使う場合、とても参考になるサンプルコードがShinyのGalleryにありました。
Shiny - NVD3 line chart output
Shiny - NVD3 line chart output
これは、僕が理解している範囲で言えば、独自のoutputオブジェクトを定義してDataframeをjsに渡し、 nvd3.jsでグラフを記述するというやり方です。
なかなか面倒くさいですが、僕のアプリの場合rChartsよりサクサクとグラフが描画されましたし、
まぁ、こういうやり方とサンプルがあるよ、ということで。
詳しくは、上記コードをご覧ください。
繰り返しになりますが、基本的にはrChartsを使うのが最もカンタンだと思います。
参考文献
- Shiny - NVD3 line chart output
- shiny-js-examples/output at master · jcheng5/shiny-js-examples · GitHub
- 作者: 手原和憲
- 出版社/メーカー: 小学館
- 発売日: 2014/04/30
- メディア: コミック
- この商品を含むブログ (14件) を見る
2007カルビーJリーグ【189山瀬幸宏/横浜F・マリノス】レギュラーカード
- 出版社/メーカー: カルビー
- メディア:
- この商品を含むブログを見る