Windows上で Graphviz + pygraphviz を使えるようにするのはけっこう大変です。
- http://d.hatena.ne.jp/m-hiyama/20110823/1314061686
- http://d.hatena.ne.jp/adragoona/20121009/1349813986
今までpygraphvizのバグ(Windowsでしか発現しない)のせいで、Caty内で有向グラフの自己ループ辺や多重辺が描けなかったのですが、バグを回避する細工をして、なんとか自己ループ辺/多重辺も描けるようになりました。
Kuwataさんは具体的に書いてないけど、実際にやったことは:
- グラフオブジェクト(AGraph)のコンストラクタに strict=False を渡しても効かないので、"digraph グラフ名 {}" のような文字列を渡すようにした。
- グラフ名がDOTのキーワードと被ると構文エラーになるので、クォーティングした。
描画コマンドとその結果:
[
// 2つのノード
gv:node a,
gv:node b,// 自己ループ辺
gv:edge a a,// 多重辺(マルチエッジ)
gv:edge a b,
gv:edge a b
]
gv:graph |
「衝撃的なデータベース理論・関手的データモデル 入門」でうまく描けてなかった三番目の図もちゃんと描けます(後で差し替えよう)。