Подтвердить что ты не робот

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

чтобы визуализировать последовательность узлов, связанных ребрами, закодированными в python.

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

либо библиотека, написанная в связках python или python, в порядке

(я знаю Visustin, но ищу альтернативы)

4b9b3361

Ответ 1

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

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

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

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

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

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

alt text

Здесь код (в graphviz 'dot langauge) я использовал для создания небольшой "блок-схемы" ниже:

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];
}

Ответ 2

Как и doug, я бы предложил Graphviz.

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

Ответ 3

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