Python中的图形渲染(流程图可视化)
想要用Python来展示一系列通过边连接的节点。
在寻找一个可以用来可视化这种图形数据的Python库。
无论是用Python写的库,还是Python的绑定库都可以。
(我知道Visustin这个工具,但想找其他的选择。)
3 个回答
gprof2dot.py
是一个可以自动分析和可视化你程序执行流程的工具。你可以在 ActiveState Code 的 578138号配方 找到它。请注意程序最后的批处理文件。
像doug说的,我也推荐使用Graphviz。
我还想提一下,你可以直接用一种非常简单的dot语言来写图(然后可以用Graphviz或其他工具来绘制);这是一种比使用pydot更轻便的选择,你的代码不需要依赖任何模块。
我觉得Graphviz是最好的选择。
Graphviz是一个顶级的图形渲染和布局库;它成熟、稳定、开源,而且是免费的。虽然它不是专门用来画流程图或图表的工具,但它的主要功能就是高效且美观地渲染由节点和边组成的对象,这自然也包括了流程图的绘制。特别是它的接口允许用户对布局设置各种约束,这样可以鼓励以不同的格式进行渲染。例如,你可以要求同一层级的所有节点(从根节点到父节点的数量相同)在一个居中的行中渲染。
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];
}