Est-il interactif d'une bibliothèque graphique 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 noeuds.
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.
- Double Possible de Représentant les graphes (structure de données) en Python
Vous devez vous connecter pour publier un commentaire.
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)
Également trouvé Gephi, on dirait que pourrait avoir la fonctionnalité que vous voulez ainsi.
http://gephi.org/ Windows, Linux et Mac OSX
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 caractéristiques. 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.
J'ai le même problème.
En fin de compte, je pense que nodebox opengl semble faire l'affaire.
N'essayez pas d'utiliser le graphique de la bibliothèque sur le lien suivant
http://nodebox.net/code/index.php/Graph
avec nodebox opengl. Il ne fonctionne pas, que le graphique de la bibliothèque est uniquement compatible avec mac OSX nodebox. Mais dans anycase c'est ok parce que vous n'en avez pas besoin.
Voir par exemple la question suivante:
L'ajout de l'étiquette à une arête d'un graphe dans nodebox opnegl
Il montre un exemple de code qui fonctionne pour moi, le code peut être modifié, de sorte qu'en cliquant sur un nœud non seulement vous permet de déplacer le nœud, mais vous permet également de modifier le graphique.
Il suffit de supprimer
à partir du code et il fonctionne.
EDIT:
J'ai mis un exemple plus détaillé de code ici:
Nodebox open GL Graphique, en fonction de la taille n'est pas reconnu. (Ubuntu)