このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

pygraphvizで自己ループ辺、多重辺が描けるようになった

Windows上で Graphviz + pygraphviz を使えるようにするのはけっこう大変です。

今までpygraphvizのバグ(Windowsでしか発現しない)のせいで、Caty内で有向グラフの自己ループ辺や多重辺が描けなかったのですが、バグを回避する細工をして、なんとか自己ループ辺/多重辺も描けるようになりました。

Kuwataさんは具体的に書いてないけど、実際にやったことは:

  1. グラフオブジェクト(AGraph)のコンストラクタに strict=False を渡しても効かないので、"digraph グラフ名 {}" のような文字列を渡すようにした。
  2. グラフ名がDOTのキーワードと被ると構文エラーになるので、クォーティングした。

描画コマンドとその結果:


[
// 2つのノード
gv:node a,
gv:node b,

// 自己ループ辺
gv:edge a a,

// 多重辺(マルチエッジ)
gv:edge a b,
gv:edge a b
]

gv:graph

衝撃的なデータベース理論・関手的データモデル 入門」でうまく描けてなかった三番目の図もちゃんと描けます(後で差し替えよう)。