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