Sep 24, 2006

Graphviz [computer]

有向グラフ生成ツールといったところか。扱い的に「有向」となっているが 図的には無向グラフも書ける

Graphviz - Graph Visualization Software http://www.graphviz.org/

日本語の扱い

日本製ではないが現在のgraphvizは内部的には8bitが通るようになっている。昔のバージョンでは色々苦労されたようだが、現在のgraphvizではそのままでも適切な文字コードを使い、フォントを指定すれば漢字の入った図を作成できる。 GraphvizはGDライブラリを使用しているのでGDの日本語の扱いに依存する。 この問題については Graphviz (http://d.tir.jp/pw?Graphviz) に詳細がある。 dot -Tps で直接Postscriptファイルを出力させる場合は文字コードを他の場合と別にする、フォントの指定が他の出力フォーマットの場合と変える必要があるなど少々面倒。プリントアウトの場合は一度svg等のフォーマットで出力しておいてinkscape等のソフトでPostscriptに変換した方が面倒が少ないかもしれない。 GDはそのままではエンコーディングがUTF-8ならそのまま日本語が使用可能で、コンパイル時のオプションによりEUC-JPが使用できるようになる。UTF-8とEUC-JPは両立しない。 FreeBSDのportsではgraphicsカテゴリのものはUTF-8が使用可、japaneseカテゴリにあるGDはEUC-JPが使えるようにオプションを変更したものである。どちらを使ってもよいがエディタ等でUTF-8の使用に困らないのであればUTF-8を使った方が各種ソフトウェアの管理上は手間がかからないように思う。

サンプル disk.dot

digraph disk {
	size = "6,6"; 
	ratio = compress;
	node[fontsize=14,fontname="mikachan"];
	edge[fontsize=14,fontname="mikachan"];

	1976 -> 1979[arrowhead none];
	1979 -> 1980[arrowhead none];
	1980 -> 1986[arrowhead none];
	1986 -> 1996[arrowhead none];
	1996 -> 2000[arrowhead none];
	2000 -> 2001[arrowhead none];
	2001 -> 2003[arrowhead none];
	2003 -> 2005[arrowhead none];

	veritas1 -> veritas2;
	veritas2 -> veritas3;
	seagate1 -> コナー [label="独立"];
	コナー -> seagate2 [label="合併"];
	seagate1 -> seagate2 [weight=2.5];
	seagate2 -> veritas2[label="合併"];
	veritas2 -> seagate3 [label="合併解消"];
	seagate3 -> seagate4[weight=2.5] ;
	maxtor2 -> seagate4 [label="合併"];
	maxtor1 -> maxtor2;
	Quantum -> maxtor2 [label="売却"];
	seagate1 [label="シーゲート"];
	seagate2 [label="シーゲート"];
	seagate2 [label="シーゲート"];
	seagate3 [label="シーゲート"];
	seagate4 [label="シーゲート"];
	maxtor1 [label="MAXTOR"];
	maxtor2 [label="MAXTOR"];
	veritas1 [label="ベリタス"];
	veritas2 [label="ベリタス"];
	veritas3 [label="ベリタス"];

	{rank=same; 1976 "seagate1" ;}
	{rank=same; 1979 "maxtor1" ;}
	{rank=same; 1980 "Quantum" ;}
	{rank=same; 1986 "コナー" ;}
	{rank=same; 1996 "seagate2" ;}
	{rank=same; 2000 "seagate3" "veritas2" "veritas3";}
	{rank=same; 2001 "maxtor2" ;}
	{rank=same; 2005 "seagate4" ;}
}
fontname=ではフォントファミリを指定する。fontconfigを使っている場合、fc-list コマンドを実行した出力の1カラム目で表示される文字列である。 この例ではフリーの手書き風フォント「みかちゃんフォント」を指定している。
fontname="mikachan"

 % dot -Tpng disk.dot > disk.png

Posted at 01:25 in computer

Archives
Powered by
blosxom 2.0
and
modified by
blosxom starter kit