64 votes

Existe-t-il une bibliothèque graphique interactive pour python?

Je suis à la recherche interactive d'une bibliothèque graphique pour Python.

Par "graphique", je voulais dire un ensemble de nœuds reliés par un ensemble de sommets (pas une parcelle de valeurs des axes x-y, ni d'une grille de pixels).

Par "interactif", je voulais dire que je peux les glisser-déposer les nœuds, et j'ai besoin d'être en mesure de cliquer sur les noeuds/vertices et la bibliothèque passer les nœuds/vertices à mes rappels, ce qui peut ajouter/supprimer des nœuds/sommets ou des informations d'affichage (je ne peux pas charger la totalité du graphique au démarrage comme le jeu de données est trop grande/trop complexe; au lieu de cela, je vais charger les tranches de données, selon les entrées de l'utilisateur).

En Python, je voulais dire le langage de programmation Python, la bibliothèque graphique devrait avoir Disponible de liaison. J'ai Python 2.7 et Python 3.1, mais peut revenir à 2.6 si nécessaire. Cette exigence de la langue est parce que le jeu de données, je travaille avec seulement binding Python.

La bibliothèque graphique doit prendre en charge graphe orienté et être en mesure de la disposition de l'nœuds automatiquement. J'ai besoin de mettre des étiquettes sur les nœuds.

De préférence, le layouting algorithme doit placer les nœuds adjacents à proximité les uns des autres. Il doit être capable de gérer à partir de 100 à 1000 nœuds et sur 300-4000 sommets raisonnable dans mes 4 ans d'ordinateur portable (je commence généralement avec près de 100 nœuds, mais le nombre pourrait augmenter en fonction de la saisie de l'utilisateur). De préférence, il doit être une bibliothèque avec pas trop de dépendances (sauf peut-être pour Gnome). L'Open source est préféré.

J'ai déjà écrit un simple prototype de mon programme en utilisant Tkinter, Toile, mais j'ai besoin d'un plus grave d'une bibliothèque graphique pour développer le programme. J'ai regardé graphviz et matplotlib, mais apparemment, ils sont seulement pour travailler avec des graphes statiques et, apparemment, aurait besoin de beaucoup de travail pour faire des manipulations interactives (corrigez-moi si je me trompe, je n'ai regardé brièvement). J'ai aussi essayé de générer le graphe d'un fichier SVG et à l'aide d'Inkscape pour l'afficher, mais il est trop lent et prend trop de mémoire et en raison du grand nombre de sommets, il devient emmêlés.

32voto

Acorn Points 16562

Ressemble Nodebox peut-être ce que vous voulez:

http://nodebox.net/code/index.php/Graph Mac OSX

http://www.cityinabottle.org/nodebox/ Windows (à l'aide d'OpenGL)

Nodebox screenshot

L'objet graphique dispose de fonctionnalités pour l'interaction de la souris en tant que bien emmitouflé dans l' graph.events objet. Il a l' propriétés suivantes:

  • graph.events.hovered: None ou le nœud sur lequel la souris survole.
  • graph.events.pressed: None ou le nœud sur lequel la souris est en appuyant vers le bas.
  • graph.events.dragged: None ou le nœud glissé.
  • graph.events.clicked: None ou le dernier nœud cliqué.
  • graph.events.popup: lors de l' True, affiche une fenêtre pop-up sur l' a plané nœud.

Aussi tombé sur Gephi, on dirait que pourrait avoir la fonctionnalité que vous voulez ainsi.

http://gephi.org/ Windows, Linux et Mac OSX

Gephi est un outil interactif de visualisation et à l'exploration de la plateforme pour tous types des réseaux et des systèmes complexes, dynamique et graphes hiérarchiques.

gephi screenshot

9voto

lecodesportif Points 1892

Vous devriez certainement regarder le igraph bibliothèque si vous ne l'avez pas.

C'est une puissante bibliothèque qui peut gérer de grandes graphiques et différents styles de mise en page. Il peut également être utilisé pour les graphes orientés et interactive et non interactive visualitzations en 2D et 3D selon la liste des fonctionnalités. Il y a aussi un tutoriel.

Mise à jour: un Autre bien connu de la bibliothèque est NetworkX pour lesquels il existe des paquets Python ici. Notez que le Mac/Windows logiciel Nodebox, recommandé par Acorn, utilise NetworkX algorithmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X