Graphviz это лучший вариант, на мой взгляд.
Graphviz представляет собой библиотеку рендеринга/компоновки премьеры; он зрелый, стабильный, с открытым исходным кодом и бесплатно. Это не выделенная блок-схема или диаграмма, но его основной пример использования - то есть эффективная и эстетическая рендеринг объектов, состоящих из узлов и ребер, явно включает чертеж блок-схемы - особенно потому, что его api позволяет пользователю устанавливать различные ограничения на макете для поощрения рендеринга в различных форматах - например, вы можете потребовать, чтобы все узлы того же уровня (одинаковое количество родителей из корня) отображались в одной выровненной по центру строке.
Graphviz не является библиотекой python (он написан на C); однако существуют высококачественные привязки python.
Библиотека python-Graphviz Я наиболее знакома с pygraphviz, что отлично.
Остальные два: pydot и yapgvb. Я использовал их как минимум несколько раз. Каждый из них меньше, чем pygraphviz (что может быть преимуществом в зависимости от вашего варианта использования); кроме того, ни документировано, ни pygraphviz.
К счастью, все три из этих библиотек питона тонкие оберток над 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];
}
Этот товар хорош также: http://flowchart.js.org – 2017-10-24 06:25:38