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?


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


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.


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






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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.