Python中的图形渲染(流程图可视化)

39 投票
3 回答
91468 浏览
提问于 2025-04-16 08:40

想要用Python来展示一系列通过边连接的节点。

在寻找一个可以用来可视化这种图形数据的Python库。

无论是用Python写的库,还是Python的绑定库都可以。

(我知道Visustin这个工具,但想找其他的选择。)

3 个回答

1

gprof2dot.py 是一个可以自动分析和可视化你程序执行流程的工具。你可以在 ActiveState Code 的 578138号配方 找到它。请注意程序最后的批处理文件。

11

像doug说的,我也推荐使用Graphviz。

我还想提一下,你可以直接用一种非常简单的dot语言来写图(然后可以用Graphviz或其他工具来绘制);这是一种比使用pydot更轻便的选择,你的代码不需要依赖任何模块。

53

我觉得Graphviz是最好的选择。

Graphviz是一个顶级的图形渲染和布局库;它成熟、稳定、开源,而且是免费的。虽然它不是专门用来画流程图或图表的工具,但它的主要功能就是高效且美观地渲染由节点和边组成的对象,这自然也包括了流程图的绘制。特别是它的接口允许用户对布局设置各种约束,这样可以鼓励以不同的格式进行渲染。例如,你可以要求同一层级的所有节点(从根节点到父节点的数量相同)在一个居中的行中渲染。

Graphviz不是一个Python库(它是用C语言写的);不过有高质量的Python绑定可供使用。

我最熟悉的Python-Graphviz库是pygraphviz,这个库非常出色。

另外两个库是pydotyapgvb。我至少用过这两个库几次。它们都比pygraphviz小(这可能在某些情况下是个优点);而且它们的文档也没有pygraphviz那么完善。

幸运的是,这三个Python库都是对Graphviz的轻量级封装,所以它们都没有隐藏Graphviz优雅简洁的语法(也就是dot语言)。

alt text

下面是我用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];
}

撰写回答