rChartsのnPlotに関するメモ

rChartsを使って要介護認定の状況を可視化した。
http://rpubs.com/dichika/youkaigo
その際色々と困ったのでメモ。
今回はd3.jsのライブラリの中でもNVd3nを用いるnPlotを可視化に使ったので、その話がメインになるが、それ以外のライブラリを使う場合もやり方は原則として同じだと思われる。

Javascriptリテラルを渡す時

文字列としてではなくJavascriptリテラルとしてrChartsに認識させたい時がある。
その際は#! ... !#というシンタックスで包む。
http://stackoverflow.com/questions/19421211/nvd3-scatterplot-with-rcharts-in-r-vary-size-of-points

n1$yAxis(tickFormat = "#!function(d) {return d3.format('%')(d)}!#")

オプションの設定

xAxis.tickValuesやyAxis.tickFormatのようにxAxisやyAxisに関するものは、n1$xAxis(tickValues=ほにゃらら)といった形で設定する。
chart.forceY[0]のようにchartに対して設定したい場合も同様。

n1 <- nPlot(要支援 ~ date, group = "保険者", 
            data = youkaigo, type = "lineChart")
n1$xAxis(tickValues="#![11323,11700,12060,12420,12790,13150,13520,13880,14250,14615,14980,15345,15710,16071,16430]!#",
  tickFormat = "#!function(d) {return d3.time.format('%Y')(new Date( d * 86400000 ));}!#"
         )
n1$yAxis(tickFormat = "#!function(d) {return d3.format('%')(d)}!#")
n1$chart(forceY="#![0]!#")

addControls、addFiltersをうまく使えばShinyいらず

動的な操作を加えたい時、Shinyなどでwebアプリ化するのが普通だがaddControlsやaddFiltersを使えば簡単な操作は行える。
http://rcharts.io/icontrols/#.UwCOG0LV-7I

n1$addControls("y", value = "要支援", values = names(youkaigo)[-(1:3)])
n1$addFilters("area")

knitHTMLする時

通常RStudio上でrChartsで可視化した時の結果をknitHTMLする際はprintを使う。

n1$print("chart1", include_assets=TRUE, cdn=TRUE)

ただし、addControlsを使った時はprintではなくshowを使う必要がある。
https://github.com/ramnathv/rCharts/issues/339

n1$show('iframesrc', cdn = TRUE)

その他

rChartsとは関係ないけどDropboxのpublicフォルダに置いてあるデータを読み込むときは、パブリックリンクのhttpsからsをとってhttpに変えれば読み込める。

# 読み込めない
youkaigo <- read.csv("https://dl.dropboxusercontent.com/u/956851/youkaigo_area.csv",as.is=TRUE)
# 読み込める
youkaigo <- read.csv("http://dl.dropboxusercontent.com/u/956851/youkaigo_area.csv",as.is=TRUE)

enjoy!