参議院の議席の流れをsankey-diagramで可視化する

元ネタはこちら
http://timelyportfolio.blogspot.jp/2013/07/all-my-roads-lead-back-to-financepimco.html

google analyticsでも「ユーザーフロー」に使われているsankey-diagramという可視化手法がある。
http://en.wikipedia.org/wiki/Sankey_diagram
で、d3.js関連の可視化をがしがし実装してくれているtimelyportfolioの人がそれも実装していた。
早速試してみる。

library(rCharts)
# 事前に↓をzipで落として展開しておく
# https://github.com/timelyportfolio/rCharts_d3_sankey
# 展開した場所に移動しておく
setwd("/hoge/rCharts_d3_sankey-gh-pages")

# 可視化用データ(2013参議院選挙の議席の流れ)
# http://www.chunichi.co.jp/senkyo/sanin2013/kaihyo/touha.html
seats <- data.frame(
  source=c("総議席","総議席","改選","改選","改選","改選","改選","改選","改選","改選","改選","非改選"),
  target=c("改選","非改選","自民","民主","公明","みんな","共産","維新","社民","諸派","無所属"," 非改選"),
  value=c(121,121,65,17,11,8,8,8,1,1,2,121)
  )

sankeyPlot <- rCharts$new()
sankeyPlot$setLib('libraries/widgets/d3_sankey')
sankeyPlot$setTemplate(script = "libraries/widgets/d3_sankey/layouts/chart.html")

sankeyPlot$set(
  data = seats,
  nodeWidth = 15,
  nodePadding = 5,
  layout = 32,
  width = 750,
  height = 500,
  labelFormat = ""
)

sankeyPlot$show()

すると以下のような図ができる。

ちなみに描画データ(上記の場合seats)において、sourceとtargetが同じ文字列だと描画されないので注意。
(上記の場合、非改選→(半角スペース)非改選、という姑息な手段をとっている。)

enjoy!!!