web-dev-qa-db-ja.com

python(フローチャートの視覚化)でのグラフのレンダリング

pythonでエンコードされたエッジで接続されたノードのシーケンスを視覚化します。

このようなグラフデータを視覚化するためのpythonライブラリを探しています。

pythonまたはpython bindings、OK

(私はVisustinを知っていますが、代替手段を探しています)

27
eWizardII

Graphviz は私の意見では最良のオプションです。

Graphvizは、プレミアグラフレンダリング/レイアウトライブラリです。成熟し、安定しており、オープンソースであり、無料です。それは専用のフローチャートまたは図表パッケージではありませんが、そのコアユースケース-すなわち、ノードとエッジで構成されるオブジェクトの効率的で審美的なレンダリングは、明らかにフローチャートの描画を包含します-特にそのAPIはユーザーがさまざまな設定を可能にするためconstraintsさまざまな形式でのレンダリングを促進するためのレイアウト。たとえば、同じレベル(ルートからの同じ数の親)のすべてのノードを単一の中央揃えの行にレンダリングすることを要求できます。

Graphvizはpythonライブラリ(Cで記述されています)ではありません。ただし、高品質のpythonバインディングが利用可能です。

私が最もよく知っているpython-Graphvizライブラリは pygraphviz であり、これは優れています。

他の2つは pydotyapgvb です。私はこれらの両方を少なくとも数回使用しました。それぞれがpygraphvizよりも小さくなります(ユースケースによっては利点になる場合があります)。さらに、pygraphvizと同様に文書化されていません。

幸いなことに、これら3つすべてpythonライブラリはGraphvizの薄いラッパーなので、軽量でエレガントなGraphviz構文(dot言語)。

alt text

以下は、graphviz 'dot languageのコードです。以下に小さな「フローチャート」を作成するために使用しました。

digraph {

  node [    fill=cornflowerblue,
            fontcolor=white,
            shape=diamond,
            style=filled];

  Step1 [   color=darkgoldenrod2,
            fontcolor=navy,
            label=start,
            shape=box];

  Step2;

  Step3a [  style=filled,
            fillcolor=grey80,
            color=grey80,
            shape=circle,
            fontcolor=navy];

  Step1  -> Step2;
  Step1  -> Step2a;
  Step2a -> Step3a;
  Step3;
  Step3a -> Step3;
  Step3a -> Step2b;
  Step2  -> Step2b;
  Step2b -> Step3;
  End [ shape=rectangle,
        color=darkgoldenrod2,
        fontcolor=navy];
  Step3  -> End [label=193];
}
37
doug

ダグのように、Graphvizをお勧めします。

また、非常にシンプルなグラフを直接書くこともできます ドット言語 (Graphvizまたは他のツールでプロットできます);これは、pydotを使用するより軽量な代替手段であり、コードをモジュールに依存しません。

9
Eric O Lebigot

gprof2dot.pyは、プログラムの実行フローを自動的にプロファイリングおよび視覚化できます。 ActiveState Codeでは reciple 578138 として見つけることができます。プログラムの最後にあるバッチファイルに注意してください。

1
Noctis Skytower