Sankeyダイアグラムとは,閉路のない有向グラフ(DAG:Directed Acyclic Graph)を視覚化する手法の一つで, 枝の重みとして定義される流量が接点間でどのような割合で流れていくかを直感的に理解することができ, 送電ネットワークの視覚化などに利用される.
内部では、D3ライブラリ(Data-Driven Documents)で作成された視覚化アプリケーションsankey diagram (http://bost.ocks.org/mike/sankey/)を利用している。
入力データとしては,Table 2.1に示されるような枝を節点ペアとその値を一行で示したCSVデータである。
出力はsankeyダイアグラムを組み込んだ単体のhtmlファイルで、 インターネットへの接続がなくてもブラウザがあれば描画できる(2.2)。 グラフの向きは左から右の方向で、コマンドパラメータf=で指定した1番目の項目が左、2番目の項目が右に対応する。 色のついたバーが節点に対応し、接点間を結ぶ帯が枝に対応する。 節点の出力位置の決定にはinterval relaxztion法が用いられている。 詳細はオリジナルのURL(上述)を参照のこと。 経験的には5節点水平位置10箇所
節点ともなると、描画に非常に時間を要する。
なお、本コマンドを利用するためには、nysol/mcmdライブラリの他にjsonライブラリが必要となる。
Table 2.1: 入力データ(閉路のない有向グラフ)
|
![]() Table 2.2: sankeyダイアグラム |
msankey [i=] f= v= [o=] [t=] [T=] [--help]
i= : 枝データファイル f= : 枝データ上の2つの節点項目名 v= : 枝の重み項目名 o= : 出力ファイル(HTMLファイル) t= : タイトル文字列 -T : ワークディレクトリ(default:/tmp) --help : ヘルプの表示
前節の解説で用いてる例。
$ more dat1.csv node1,node2,val a,b,1 a,c,2 a,d,1 b,c,3 b,d,3 c,f,1 c,e,4 d,e,1 e,f,3 $ msankey.rb i=dat1.csv f=node1,node2 v=val o=output.html $ head output.html <!DOCTYPE html> <html class="ocks-org do-not-copy"> <meta charset="utf-8"> <!-- <title>Sankey Diagram</title> --> <title></title> <style>