シリーズ Useful R 9巻「ドキュメント・プレゼンテーション生成」のサプリメントです。 rChartsパッケージでmorris.jsライブラリを使う方法についての補足です。

シリーズ Useful R / ドキュメント・プレゼンテーション生成 / Amazon

サポートサイト


概要

rChartsでmorris.jsを利用するには、mPlot関数を呼び出してプロットオブジェクトを作成します。 プロットオブジェクト作成時、及びプロットオブジェクトのsetメソッド通してチャートのカスタマイズを行うことができます。

設定できるオプションはmorris.jsの公式サイトを参照して下さい。

オプション指定はややこしいのですが、慣れてくるとなんとなくで使えるようになります。 慣れるまでは色々と試してみてください。

以下の例では、プロットオブジェクト作成時にスムージングをOFFにしています。 setメソッドによってグリッドと軸の非表示にして、線の色を変更しています。ちょっと寂しいですね。

# プロットオブジェクトの作成(スミージングを無効に)
p <- mPlot(y ~ x, data = data.frame(x = paste(2001:2005), y = rnorm(1:5)), type = "Line", smooth = FALSE)
# グリッドと軸
p$set(grid = FALSE, axes = FALSE)
# 線の色
p$set(lineColors = list("skyblue"))
p$show("inline", include_assets = FALSE)
## Loading required package: reshape2

ラインチャート・エリアチャート

2系列のラインチャート

複数の系列を表示するには、mPlotの引数yに変数名を複数渡します。

d <- data.frame(x = paste(2001:2010), y1 = runif(10), y2 = runif(10))
p <- mPlot(x = "x", y = c("y1", "y2"), data = d, type = "Line", labels = c("系列1", "系列2"))
p$show("inline", include_assets = FALSE)

3系列の時系列エリアチャート

エリアチャートを使うにはtype="Area"とします。ここではeventオプションを追加しています。

d <- data.frame(x = paste(2001:2010), y1 = runif(10), y2 = runif(10), y3 = runif(10))
p <- mPlot(x = "x", y = c("y1", "y2", "y3"), data = d, type = "Area", smooth=FALSE, pointSize = 10, lineWidth = 5)
# eventオプションを追加
p$set(events = paste(c(2004, 2008)), eventStrokeWidth = 10)
p$show("inline", include_assets = FALSE)

ツールチップ

hoverCallbackオプションで、マウスカーソルを乗せた時にポップアップするツールチップをカスタマイズできます。 ここではデータ内のラベル変数(ch)を表示しています。 ツールチップにはjavascript関数を文字列で渡しますが、この時にクォーテーションを避けるために"#! ... !#"という表記法を用います。

d <- data.frame(x = paste(2001:2010), y1 = runif(10), y2 = runif(10), ch = letters[1:10])
p <- mPlot(x = "x", y = c("y1", "y2"), data = d, type = "Line", labels = c("系列1", "系列2"))
# ツールチップ用のコールバック関数を設定
p$set(hoverCallback = "#! function (index, options, content) {return options.data[index].ch;} !#")
p$show("inline", include_assets = FALSE)

バーチャート

バーチャートを使うにはtype="Bar"とします。

d <- data.frame(x = paste(2001:2010), y1 = runif(10), y2 = runif(10), y3 = runif(10))
p <- mPlot(x = "x", y = c("y1", "y2", "y3"), data = d, type = "Bar", barColors = c("red", "green", "blue"))
p$show("inline", include_assets = FALSE)

積み上げバーチャート

積み上げ形式を使うにはstacked=TRUEとします。

d <- data.frame(x = paste(2001:2010), y1 = runif(10), y2 = runif(10), y3 = runif(10))
p <- mPlot(x = "x", y = c("y1", "y2", "y3"), data = d, type = "Bar", stacked = TRUE, barColors = c("red", "green", "blue"))
p$show("inline", include_assets = FALSE)

ドーナツチャート

morris.jsのドーナツチャートではパイチャートの真ん中に情報を表示できます。 type = “Donut”とします。また、labelvalueという変数を持つデータフレームを渡して、xyNULLとします (警告っぽいメッセージが出ますが無視して構いません。もし嫌な場合はxyに“dummy”のような適当な文字を渡します)。 formatterにコールバック関数を渡して、真ん中に表示する情報を整形します。

d <- data.frame(label = c("'92 巣立ち", "'95 秘密", "'98 時代", "'02 遺言"), value = c(32, 30, 25, 38))
p <- mPlot(x = NULL, y = NULL, data = d, type = "Donut", formatter = "#! function (y) { return('視聴率'+y+'%!!'); } !#")
p$show("inline", include_assets = FALSE)
## The following `from` values were not present in `x`: x

Enjoy!!