Bibliothèque de graphiques Python [fermé]

354

J'écris une application python qui fera un usage intensif d'une structure de données de graphique. Rien d'horriblement complexe, mais je pense qu'une sorte de bibliothèque de graphes / graphes-algorithmes pourrait m'aider. J'ai fait des recherches sur Google, mais je ne trouve rien qui me saute particulièrement aux yeux.

Quelqu'un a-t-il de bonnes recommandations?

cpatrick
la source
Quels algorithmes graphiques recherchez-vous?
Andrew
1
Amoss, je cherchais une bibliothèque de graphes qui pourrait calculer les chemins les plus courts en fonction des poids. Des trucs de base, vraiment. J'ai fini par aller avec networkx. Cela fonctionne plutôt bien. Je n'ai pas touché au projet depuis un moment, cependant. Cette question a été posée il y a plus d'un an.
cpatrick
108
Il est scandaleusement étrange qu'il y ait des questions aussi utiles et que beaucoup de votes comme celui-ci puissent être classés comme "non constructifs".
Jim Raynor
1
Vous pouvez également utiliser une "base de données de graphes natifs" comme neo4j, puis utiliser une liaison python pour discuter avec la base de données?
Un STEFANI
3
@JimRaynor "Pas constructif" était un vieux fourre-tout. Les raisons proches ont été mises à jour pour mieux (pas parfaitement, mais mieux) couvrir l'utilisation prévue. Aujourd'hui, cela serait clos en tant que question de recommandation.
jpmc26

Réponses:

237

Il y a deux excellents choix:

NetworkX

et

igraph

J'aime NetworkX, mais j'ai aussi lu de bonnes choses sur igraph. J'utilise régulièrement NetworkX avec des graphiques avec 1 million de nœuds sans problème (c'est environ le double de la surcharge d'un dict de taille V + E)

Si vous voulez une comparaison des fonctionnalités, voyez-le dans la liste Networkx-discuter

Fil de comparaison des fonctionnalités

Gregg Lind
la source
4
En particulier, ce que j'aime chez Networkx .... c'est principalement en python, facile à éditer et à comprendre le code source, et il se sent surtout "pythonique".
Gregg Lind
1
Je me demandais, l'avez-vous utilisé avec un * ou des algorithmes similaires?
dassouki
4
Je viens d'évaluer les deux. networkxest installable via pip, alors qu'il igraphne l'est pas. Cela rend igraphplus difficile à utiliser comme dépendances dans vos setup.pyfichiers.
exhuma
3
En tant que mise à jour pour 2013, je vais avec networkx juste b / c, il a un github et regarde le plus à jour de toutes les options de cette réponse et des autres
Мати Тернер
1
igraph a également un github: github.com/igraph/python-igraph
user_1_1_1
105

Je voudrais brancher ma propre bibliothèque de graph python: graph-tool .

Il est très rapide, car il est implémenté en C ++ avec la bibliothèque de graphiques Boost, et il contient de nombreux algorithmes et une documentation complète.

Tiago Peixoto
la source
6
l'outil graphique est fantastique.
Sean
5
+1 Pour l'outil graphique. Nous l'avons utilisé dans notre laboratoire. C'est vraiment rapide par rapport aux autres bibliothèques python. En outre, dessiner et afficher un graphique est assez génial dans graph-tool. Il faut cependant beaucoup de temps pour compiler!
Dilawar
5
Pas de support Windows malheureusement :(
Mike Chaliy
2
@TiagoPeixoto Cela semble tellement prometteur mais ne peut pas être utilisé sur Windows. Je suis coincé avec NetworkX, le trouvant trop lent.
Naman
2
@ColonelPanic Ceci est une FAQ, voir graph-tool.skewed.de/download : "La réponse courte est que cela ne peut pas être fait, car graph-tool dépend de façon cruciale de certaines (excellentes) bibliothèques C ++ telles que Boost, qui sont non installable via pip. "
Tiago Peixoto
32

Avez-vous regardé python-graph ? Je ne l'ai pas utilisé moi-même, mais la page du projet semble prometteuse.

zweiterlinde
la source
10

Aussi, vous voudrez peut-être jeter un œil à NetworkX

lmount
la source
6

Utilisez la bibliothèque de graphiques Boost - Liaisons Python .

Franc
la source
1
Gentil dehmann, je suis allé pour ça en premier (étant un programmeur C ++ de métier et un coup de fouet absolument amoureux), mais cela me fait peur: les liaisons BGL-Python ne sont plus maintenues <un haut de page>
cpatrick
3
Regardez plutôt graph-tool, il est basé sur bgl et actif.
Sean
0

J'appuie la suggestion de zweiterlinde d'utiliser python-graph. Je l'ai utilisé comme base d'un projet de recherche graphique sur lequel je travaille. La bibliothèque est bien écrite, stable et possède une bonne interface. Les auteurs répondent également rapidement aux demandes de renseignements et aux rapports.

jtguerin
la source