Graphviz

[トップ][一覧][最近の更新]

http://www.research.att.com/sw/tools/graphviz/

有向グラフ生成ツール。

dot形式のファイルから、下記のような有向グラフを生成する。

[image]


自分で構築したgraphvizで↑のdotファイルを実行すると、neatoコマンドではちゃんとグラフが生成されるがdotコマンドだと何故かsegvで落ちる。困る。何が悪いのかは不明。

…‥と思っていたが、GDのオプションを追加してutf-8ではなくeucでdotファイルを書いて読み込ませたら、segvは起きなくなった。GDかlibiconv?のバグ?

自分もまだまだgraphvizの扱いを調べ中なので、graphvizの良いサイト等知っていたり、情報公開してたら、すみませんが、教えてクダサイ。


日本語のグラフを出力する方法

graphviz内部的には、多分、8bit cleanな形式で文字列を扱っているような気がするので、以下の二点を突破すれば、日本語のグラフを出力可能。

フォントは、どうにかすれば指定可能(しかし、自分はちゃんとやり方を調べてない。ので、環境変数DOTFONTPATHで適当なディレクトリを指定し、その中に「ln -s hoge.ttc times.ttf」でtimes.ttfのシンボリックリンクを作って誤魔化した)。

        node [fontname = "Helvetica"];

次の、日本語エンコーディング種別だが、コレは、次のどちらの方法でグラフを出力するかで変わってくる。

結論から先に言うと、「直接吐き出す場合は、dotファイルはutf-8で書く。psにする場合はps変換ツールのネイティブエンコーディングで」。

graphvizは、内部にGDを持っており、そのGDが、configure時にCFLAGSとして-DJISX0208オプションをつけていない場合は、utf-8文字列のみ受け付ける。 -DJISX0208オプションをつければ、utf-8は受け付けなくなり、代わりにeucを受け付けるようになる。

(尚、自分はフォント指定でイカサマをしているので、ps形式の方は試してない。可能なら、ps経由で画像出力をしたいが…‥)


自分のconfigure設定

CFLAGS="-Os -march=i686 -DJISX0208" \
./configure \
--prefix=/usr/local \
--with-freetypeincludedir=/usr/include/freetype2 \
--with-freetypelibdir=/usr/lib \
--with-zincludedir=/usr/include \
--with-zlibdir=/usr/lib \
--with-pngincludedir=/usr/include \
--with-pnglibdir=/usr/lib \
--with-jpegincludedir=/usr/include \
--with-jpeglibdir=/usr/lib \
--with-dynagraph \
--without-x \
--with-libiconv-prefix=/usr

CFLAGSに-DJISX0208をつけて、GDにeuc文字列を渡せるようにしている。

(この場合、GDjman:iconvを要求するので、libcのjman:iconvが使えない/怪しい場合は、GNU libiconv?を予め入れておき、指定する必要がある)


最終更新 : 2006/05/09 15:04:44 JST