2010-12-17 3 views
20

для визуализации последовательности узлов, связанных ребрами, закодированными в python.рендеринг графика в python (визуализация блок-схемы)

ищет библиотеку python для визуализации таких данных графика.

либо библиотека, написанная в питона или питона привязок, нормально

(я отдаю себе отчет в Visustin, но ищет альтернативы)

+0

Этот товар хорош также: http://flowchart.js.org – 2017-10-24 06:25:38

ответ

26

Graphviz это лучший вариант, на мой взгляд.

Graphviz представляет собой библиотеку рендеринга/компоновки премьеры; он зрелый, стабильный, с открытым исходным кодом и бесплатно. Это не выделенная блок-схема или диаграмма, но его основной пример использования - то есть эффективная и эстетическая рендеринг объектов, состоящих из узлов и ребер, явно включает чертеж блок-схемы - особенно потому, что его api позволяет пользователю устанавливать различные ограничения на макете для поощрения рендеринга в различных форматах - например, вы можете потребовать, чтобы все узлы того же уровня (одинаковое количество родителей из корня) отображались в одной выровненной по центру строке.

Graphviz не является библиотекой python (он написан на C); однако существуют высококачественные привязки python.

Библиотека python-Graphviz Я наиболее знакома с pygraphviz, что отлично.

Остальные два: pydot и yapgvb. Я использовал их как минимум несколько раз. Каждый из них меньше, чем pygraphviz (что может быть преимуществом в зависимости от вашего варианта использования); кроме того, ни документировано, ни pygraphviz.

К счастью, все три из этих библиотек питона тонкие оберток над Graphviz, так что никто не скрывает легкий, изящный синтаксис GraphViz (точки языка).

alt text

Вот код (в 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]; 
} 
+1

Я думаю, что речь идет о генераторе _automatic_. Извините, я его не видел, но что хорошего в автоматическом построении блок-схемы? Диаграммы AFAIK и фантастический материал UML, должны помочь переосмыслить решение и получить перспективу, отличную от кода, поэтому сделать это автоматически для меня - это стрелять в ногу. – 2010-12-17 18:39:51

8

, как Дуг, я хотел бы предложить Graphviz.

Я также хотел бы упомянуть, что вы также можете напрямую писать графики в очень простой dot language (они могут быть затем нанесены графиком или другими инструментами); это более легкая альтернатива использованию pydot, без зависимости от вашего кода на любом модуле.

+1

всегда поклонник минималистских решений (создание файлов точек напрямую), +1 от меня. – doug 2010-12-17 09:05:34

1

gprof2dot.py может автоматически профилировать и визуализировать поток выполнения в вашей программе. Он может быть найден как reciple 578138 в ActiveState Code. Обратите внимание на командный файл в конце программы.

Смежные вопросы