R
RDay 9

Rでサンキーダイアグラムを書く

R Advent Calendar 2018 9日目(遅刻組)です.

なにを書こうか悩んでいたら,翌日になってしまっていたので,あまり日本語の解説を見ない"riverplot"を紹介します.


サンキーダイアグラムってなに?


サンキー・ダイアグラム(Sankey diagram)は工程間の流量を表現する図表である。矢印の太さで流れの量を表している。(wikipediaより引用)


WEB関連の人ですと,グーグルアナリティクスでユーザー行動の分析で使われるチャートがサンキーダイアグラムの例としてはわかりやすいのではないでしょうか?

スクリーンショット 2018-12-10 8.10.59.png

サンキーダイアグラムって名前を知らないとググりようがないので,これだけでも覚えとくと得だと思います."riverplot"とも言う.


どうやって書くか

Rには"riverplot"というパッケージがあり,そこそこ簡単に書ける.


インストールとサンプル

install.packages("riverplot")

library("riverplot")
x <- riverplot.example()
plot( x )

Rplot.jpeg

書けた!!

上で引用したWikipediaに乗っている図の一部もすぐに書くことができて,


Tutorialより引用

data( minard )

nodes <- minard$nodes
edges <- minard$edges
colnames( nodes ) <- c( "ID", "x", "y" )
colnames( edges ) <- c( "N1", "N2", "Value", "direction" )
edges$col <- c( "#e5cbaa", "black" )[ factor( edges$direction ) ]
edges$edgecol <- "col"
river <- makeRiver( nodes, edges )
style <- list( edgestyle= "straight", nodestyle= "invisible" )
plot( river, lty= 1, default_style= style )
with( minard$cities, points( Longitude, Latitude, pch= 19 ) )
with( minard$cities, text( Longitude, Latitude, Name, adj= c( 0, 0 ) ) )

Rplot01.jpeg

が書けます.

実際に0から作る例はこの後加筆対応いたしますが,とりあえずここまでで投稿いたします.


実際に書く(以下追記予定)

なにかいいデータがあればそれで描きたいですが,選挙結果でも使って描きます.


ノードデータの準備


エッジデータの準備


データの統合とPlot


描画エリアに関して