昨日書いたコードで、「有向非巡回グラフ(Directed acyclic graph)をきれいにプロットする」ということが課題として残っていました。
ところが、よく考えたらDAGはワークフローエンジン等でよく使われている概念で、ワークフローエンジンで、タスクの順番をきれいに可視化する機能はよくあります。
例えば、以下の記事でも次のような紹介があります。
ジョブ依存関係の可視化
Hashだけだとジョブの全体図が分かり辛いのでgraphviz形式でジョブの全体図を出力できます。
graphサブコマンドにジョブネットのクラス名を渡します
上で使われているGraphviz
を使えば、自分のグラフもきれいにプロットできそうです。調べたところ、networkx
からPyGraphviz
ライブラリを経由してGraphviz
を呼び出せることがわかりました。
Drawing — NetworkX 1.11 documentation
brew install graphviz pip install pygraphviz
これを使えば、簡単にDAGがプロットできます。画像はフィクションです。