Graphviz是我看来最好的选择。
Graphviz是首映式渲染/布局库;它是成熟的,稳定的,开源的,免费的。它不是一个专门的流程图或图表包,而是核心用例 – 即由节点和边缘组成的对象的高效和美观渲染显然包含流程图,特别是因为它的api允许用户在布局以鼓励各种格式的渲染 – 例如,您可以要求在单个中心对齐的行中呈现相同级别的所有节点(相同数量的父项从根)。
Graphviz不是一个python库(它是用C写的);然而有高质量的python绑定可用。
我最熟悉的python-Graphviz库是pygraphviz,这是非常好的。
另外两个是pydot和yapgvb.我已经使用了这两个至少几次。每个都小于pygraphviz(根据用例可能是一个优势);除此之外,pygraphviz也没有记录。
幸运的是,所有这三个python库都是在Graphviz上的薄包装,所以没有一个隐藏轻量级,优雅的Graphviz语法(点对点语言)。
这里是我用来创建下面的小的“流程图”的代码(在graphviz’dot langauge)中:
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];
}