blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

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;
(後は同じ)

↑の出力は↓。