Graphvizを使うと高度なチャートが手軽に描けます。時に、あまりにも複雑すぎて全体像がわからなくなったりすることもあります。特にフローチャート系で起こりがちです。 そこで使ってみたいのがGraphvizAnimです。Graphvizを使ってアニメーションGIFを作れるソフトウェアです。

GraphvizAnimの使い方

GraphvizAnimでサンプルのテキストファイルを作るスクリプトです。

from random import sample

from gvanim import Animation, render, gif

N = range( 6 )
K = 3

G = dict( ( v, sample( N, K ) ) for v in N )

ga = Animation()
for v, adj in G.items():
    for u in adj:
        ga.add_edge( v, u )
ga.next_step()

seen = [ False for v in  N ]
def dfv( v ):
    ga.highlight_node( v )
    ga.next_step()
    seen[ v ] = True
    for u in G[ v ]:
        if not seen[ u ]:
            ga.highlight_node( v )
            ga.highlight_edge( v, u )
            ga.next_step()
            dfv( u )

dfv( 0 )

graphs = ga.graphs()
files = render( graphs, 'dfv', 'png' )
gif( files, 'dfv', 50 )

このスクリプトを実行すると以下のようなファイルが生成されます。

ae 1 2
ae 1 "a \"node\""
ae 2 "a \"node\""
ns
hn 1
ns
hn 2
ln 2 "foo bar"
ns
hn "a \"node\""
# this is a comment
ae 1 4
ns
un 2

このファイルを変換すると、次のようなGIFが生成されます。数字と矢印の関係が一目で分かるようになります。

他にもこんなサンプルもあります。

文字や全体像だけでは分かりづらい情報も、アニメーションさせることでぐっと理解度が高まるのではないでしょうか。

GraphvizAnimはPython製のオープンソース・ソフトウェア(GPL v3)です。

mapio/GraphvizAnim: A tool to create animated graph visualizations, based on graphviz.