web-dev-qa-db-fra.com

rendu graphique en python (visualisation de l'organigramme)

pour visualiser une séquence de nœuds reliés par des bords encodés en python.

la recherche d'une bibliothèque python pour visualiser ces données de graphique.

soit une bibliothèque écrite en python ou python, est ok

(Je connais Visustin, mais je cherche des alternatives)

27
eWizardII

Graphviz est la meilleure option à mon avis.

Graphviz est la première bibliothèque de rendu/disposition de graphes; il est mature, stable, open-source et gratuit. Il ne s'agit pas d'un organigramme ou d'un package de diagramme dédié, mais son cas d'utilisation principal - c'est-à-dire le rendu efficace et esthétique d'objets composés de nœuds et d'arêtes, résume évidemment le dessin de l'organigramme - en particulier parce que son API permet à l'utilisateur de définir divers contraintes sur la mise en page pour encourager le rendu dans les différents formats - par exemple, vous pouvez exiger que tous les nœuds du même niveau (même nombre de parents depuis la racine) soient rendu dans une seule ligne alignée au centre.

Graphviz n'est pas une bibliothèque python (elle est écrite en C); cependant, il existe une haute qualité python disponibles.

La bibliothèque python-Graphviz que je connais le mieux est pygraphviz , ce qui est excellent.

Les deux autres sont pydot et yapgvb . J'ai utilisé les deux au moins quelques fois. Chacun est plus petit que pygraphviz (ce qui pourrait être un avantage selon votre cas d'utilisation); en outre ni l'un ni l'autre n'est documenté ainsi que pygraphviz.

Heureusement, ces trois bibliothèques python sont des wrappers fins sur Graphviz , donc aucune ne cache la syntaxe Graphviz légère et élégante (la langue dot ).

alt text

Voici le code (en langage graphviz dot ) que j'ai utilisé pour créer le petit "organigramme" ci-dessous:

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

Comme doug, je suggérerais Graphviz.

Je voudrais également mentionner que vous pouvez également écrire directement des graphiques dans le très simple langage à points (ils peuvent ensuite être tracés avec Graphviz ou d'autres outils); c'est une alternative plus légère à l'utilisation de pydot, sans dépendance de votre code sur aucun module.

9
Eric O Lebigot

gprof2dot.py peut automatiquement profiler et visualiser le flux d'exécution dans votre programme. Il peut être trouvé sous la forme principe 578138 sur le code ActiveState. Veuillez noter le fichier de commandes à la fin du programme.

1
Noctis Skytower