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

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

サポートサイト


概要

polychartはGrammer of Graphicsとggplot2にインスパイアされたグラフ描画ライブラリです。 最近はオンラインでチャート作成プラットフォームを作ったりしているようです。

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

rPlottype引数でチャートの種類を指定します。以下の様なチャートを利用できます。但しrChartsからは利用できないものもあるようです。

プロットオブジェクトのlayerfacetguidescoordといったメソッドによってチャートのカスタマイズを行います。

ほとんどのチャートはマウスでグリっとドラッグするとズームできます。 ダブルクリックすると元に戻ります。

公式サイトのデモも参考にして下さい。


散布図

単純な散布図です。 ツールチップをカスタマイズしています。 javascriptの関数は"#! ... !#"という形式で渡します。

p <- rPlot( mpg ~ qsec, data = mtcars, color = "cyl", size = "disp", type = "point")
p$layer(tooltip = "#! function(i) {return 'ギアは' + i.gear + 'です';} !#", copy_layer = TRUE)
p$show("inline", include_assets = FALSE)        

ファセットつき散布図

ファセットとは「切り口」みたいなニュアンスです。 ある要因の水準毎に別のパネルにチャートを表示します。 多要因のデータに対して効果的です。

p <- rPlot( mpg~qsec | am+vs, data=mtcars, color = "cyl", type="point")
p$show("inline", include_assets = FALSE)

ラインチャート

単純なラインチャートです。 オプションで凡例の位置を変更しています。

d <- expand.grid(x = 1:10, g = letters[1:3])
d$y <- rnorm(nrow(d))
p <- rPlot( y ~ x, data = d, color = "g", type = "line")
p$set(legendPosition = "bottom")
p$show("inline", include_assets = FALSE)

ラインチャートに点を重ねる

layerでレイヤーを追加することで複数のレイヤーを重ねることができます。 オプションでタイトルを追加しています。

d <- expand.grid(x = 1:10, g = letters[1:3])
d$y <- rnorm(nrow(d))
p <- rPlot( y ~ x, data = d, color = "g", type = "line")
p$layer(y ~ x, data = d, color = "g", type = "point")
p$set(title = "点と、線・・・")
p$show("inline", include_assets = FALSE)

エリアチャート

積み上げ式のエリアチャートです。 軸ラベルをつけています。

d <- expand.grid(x = 1:10, g = letters[1:3])
d$y <- runif(nrow(d))
p <- rPlot( y ~ x, data = d, color = "g", type = "area")
#p$guides("#! {y: {title: 'hoge', scale: {type: 'log'}}}")
p$guides(x = list(title = "あいうえお"), y = list(title = "なにぬのね"))
p$show("inline", include_assets = FALSE)

バーチャート

positionでバーの並べ方を指定できます。 stackなら積み上げ、dodgeなら並べます。

hair_eye <- as.data.frame(HairEyeColor)
p <- rPlot(Freq ~ Hair | Sex, color = "Eye", data = hair_eye, type = "bar", position = "dodge")
p$show("inline", include_assets = FALSE)

極座標プロット

座標系を変更して極座標プロットを作成できます。 Xは半径、Yは角度にマッピングされます。 ところが、Xの方はどうもダメなようです。 これでは極座標プロットではなく、ただのパイチャートですね。

d <- expand.grid(x = 1:10, g = letters[1:3])
d$y <- runif(nrow(d))
p <- rPlot(y ~ x | g, color = "x", data = d, type = "bar")
p$params$layers[[1]]$x <- NULL # xを削除
p$coord(type = "polar") # パイチャート
p$guides(x = list(position = "none", padding = 0), y = list(numticks=10)) # 軸を変更
p$show("inline", include_assets = FALSE)

Enjoy!!