AT&Tのオープンソースでグラフ構造を描画するツール。
dot言語を用いて記述する。
Doxygenなんかで関数呼び出しやクラスの関連図の可視化にも使われているようだ。

簡単な使い方

A→B, B→C, C→Aの辺を持つ有向グラフの描画
test.dot

digraph "g" {
   "A" -> "B" ;
   "B" -> "C" ;
   "C" -> "A" ;
}

で、test.dotをdottyかlneatoに食わせると新しいウィンドウで描画する。
ファイルに書き出すときは、

dot -Kneato -Tgif test.dot -o test.gif

引数の-Kはレイアウトエンジンでcirco, dot, fdp, neato, twopiの5つのどれか。-Tは出力ファイルのフォーマットでdot, gif, jpg, png, ps, svgとか色々ある。

graphviz-test.gif

dottyの使い方

dottyは対話的にノードや辺を追加してグラフを描画するツール。

レイアウトの仕方が違うdottyとlneatoがある。実はleftyを実行するラッパーなので、次のようにleftyをコマンドラインから呼び出しても同じ。上がdottyで下がlneato。

lefty -e load('dotty.lefty');dotty.simple(null);
lefty -e load('dotty.lefty');dotty.protogt.lserver='neato';dotty.simple(null);

dottyはPEAT図とか有向グラフで、lneatoは無向グラフで使うのがいいと思う。

属性

よく使いそうなのをピックアップ。マニュアルにもっと載ってる。

日本語

Windows版のdottyで日本語を表示することはできない(ようだ)が、dotから出力する画像ファイルで日本語を出力することは可能。バージョンはGraphviz2.6。以下そのやりかた。

  1. dotファイルをUTF-8で書く。fontnameにTTFのファイル名を書く。Windows2000の場合、C:\WINNT\FONTにパスが通ってるので、適当に見繕ってARIALUNI.TTFを使って見る。
    graph "g" {
       node [shape=circle, fontname="arialuni.ttf", fontsize=10, 
           width=0.5, margin=0.0]
       edge [minlen=5]
       "五代" -- "響子" -- "一ノ瀬" -- "五代";
       "三鷹" -- "響子";
       "一ノ瀬" -- "三鷹";
       "音無家" -- "響子"
       "明日菜" -- "三鷹";
       "九条家" -- "明日菜";
       "三鷹家" -- "三鷹";
       "九条家" -- "三鷹家";
       "こずえ" -- "五代";
       "八神" -- "五代";
    }
  2. 普通に出力
    dot -Kneato -Tgif test.dot -o jpfont.gif
    jpfont.gif

日本語その2

dotty.gif

leftyの改造によるdottyの日本語入力。

まだ改造途中でshiftjis特有の文字化けが残っている。たとえば、表示が侮ヲになったりするので、「set label=日本語\\\表示」みたいに特定の文字をエスケープしてやらないといけない。あとファイルの入出力もshiftjisで、dottyに直接食わせることができるのがutf-8なので、この辺もutf-8に統一したほうがよい。内部コードをutf-8に統一するのが一番近道のような気がするが・・・めんどくさそうだったのでとりあえず放置して様子見中。

dot言語メモ

Tcl関連

コメントをどーぞ


CategoryTclTk


Attach file: filedotty.gif 824 download [Information] filejpfont.gif 3658 download [Information]

|New|Edit|Freeze|Diff|History|Attach|Copy|Rename|
Last-modified: 2012-10-23 (Tue) 11:33:55
HTML convert time: 0.014 sec.