Graphviz でグラフを描く
いきさつ
Graphviz というグラフ描画専用のツールがあるので使ってみることに。
Graphviz のインストール
データ形式の変換
空手クラブのデータ karate.gml を使う。 下記サイトから入手できる。
karate.gml は gml という形式で書かれているが、 Graphviz では DOT という形式のデータを使うので gml から DOT へ変換しなければならない。 以下のコマンドで変換することができる。
↑の出力である karate.dot
は↓。
graph "" {
graph [Creator="Mark Newman on Fri Jul 21 12:39:27 2006"];
2 -- 1;
3 -- 1;
3 -- 2;
4 -- 1;
4 -- 2;
4 -- 3;
5 -- 1;
6 -- 1;
7 -- 1;
7 -- 5;
7 -- 6;
8 -- 1;
8 -- 2;
8 -- 3;
8 -- 4;
9 -- 1;
9 -- 3;
10 -- 3;
11 -- 1;
11 -- 5;
11 -- 6;
12 -- 1;
13 -- 1;
13 -- 4;
14 -- 1;
14 -- 2;
14 -- 3;
14 -- 4;
17 -- 6;
17 -- 7;
18 -- 1;
18 -- 2;
20 -- 1;
20 -- 2;
22 -- 1;
22 -- 2;
26 -- 24;
26 -- 25;
28 -- 3;
28 -- 24;
28 -- 25;
29 -- 3;
30 -- 24;
30 -- 27;
31 -- 2;
31 -- 9;
32 -- 1;
32 -- 25;
32 -- 26;
32 -- 29;
33 -- 3;
33 -- 9;
33 -- 15;
33 -- 16;
33 -- 19;
33 -- 21;
33 -- 23;
33 -- 24;
33 -- 30;
33 -- 31;
33 -- 32;
34 -- 9;
34 -- 10;
34 -- 14;
34 -- 15;
34 -- 16;
34 -- 19;
34 -- 20;
34 -- 21;
34 -- 23;
34 -- 24;
34 -- 27;
34 -- 28;
34 -- 29;
34 -- 30;
34 -- 31;
34 -- 32;
34 -- 33;
}
グラフの生成
↑の出力は↓。
karate.dot の変更
上記の画像、ノードが重なりすぎて視認性が悪いため、下記のように変更する。
graph {
overlap=false;
splines=true;
graph [Creator="Mark Newman on Fri Jul 21 12:39:27 2006"];
2 -- 1;
3 -- 1;
(後は同じ)
↑の出力は↓。