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

eWi*_*dII 28 python data-visualization graph graphviz

可视化由python中编码的边连接的节点序列.

寻找一个python库来可视化这样的图形数据.

用python或python绑定编写的库都可以

(我知道Visustin,但寻找替代方案)

dou*_*oug 37

在我看来,Graphviz是最好的选择.

Graphviz首选的图形渲染/布局库; 它是成熟,稳定,开源,免费的.它不是一个专用流程图或图表包,但其核心用例-即,由节点和边缘的对象的高效和审美渲染,显然涵括流程图附图-特别是因为它的API允许用户设置各种约束上布局以鼓励以各种格式进行渲染 - 例如,您可以要求所有相同级别的节点(来自根的相同数量的父节点)在单个中心对齐的行中进行渲染.

Graphviz不是python库(用C语言编写); 但是有高质量的python绑定可用.

我最熟悉的python-Graphviz库是pygraphviz,非常好.

另外两个是pydotyapgvb.我至少使用过这两种情况.每个都小于pygraphviz(根据您的使用情况,这可能是一个优势); 此外,既没有记录也没有pygraphviz.

幸运的是,所有这三个python库都是Graphviz上的瘦包装器,因此没有一个隐藏轻量级,优雅的Graphviz语法(语言).

替代文字

这是我用来创建下面的小"流程图" 的代码(用graphviz' 语言表示):

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];
}
Run Code Online (Sandbox Code Playgroud)


Eri*_*got 9

像道格一样,我会建议使用Graphviz.

我还想提一下,您也可以用非常简单的点语言直接编写图形(然后可以使用Graphviz或其他工具绘制它们); 这是使用pydot的一种更轻量级的替代方法,不依赖于任何模块上的代码.