Python Graph Library [geschlossen]

354

Ich schreibe eine Python-Anwendung, die eine Grafikdatenstruktur stark nutzt. Nichts schrecklich Komplexes, aber ich denke, eine Art Graph / Graph-Algorithmus-Bibliothek würde mir helfen. Ich habe herum gegoogelt, aber ich finde nichts, was mich besonders anspricht.

Hat jemand gute Empfehlungen?

Cpatrick
quelle
Welche Graph-Algorithmen suchen Sie?
Andrew
1
Amoss, ich suchte nach einer Grafikbibliothek, die kürzeste Pfade bei bestimmten Gewichten berechnen kann. Grundlegendes, wirklich. Am Ende habe ich mich für networkx entschieden. Es funktioniert ziemlich gut. Ich habe das Projekt jedoch schon eine Weile nicht mehr angerührt. Diese Frage wurde vor über einem Jahr gestellt.
Cpatrick
108
Es ist schockierend seltsam, dass es Fragen gibt, die so hilfreich sind und dass eine solche Abstimmung als "nicht konstruktiv" eingestuft werden kann.
Jim Raynor
1
Sie können auch "native Graph-Datenbank" wie neo4j verwenden und dann eine Python-Bindung verwenden, um mit der Datenbank zu diskutieren?
Ein STEFANI
3
@ JimRaynor "Nicht konstruktiv" war ein alter Haken. Die nahen Gründe wurden aktualisiert, um die beabsichtigte Verwendung besser (nicht perfekt, aber besser) abzudecken. Heute würde dies als Empfehlungsfrage geschlossen.
jpmc26

Antworten:

237

Es gibt zwei ausgezeichnete Möglichkeiten:

NetworkX

und

igraph

Ich mag NetworkX, aber ich lese auch gute Dinge über igraph. Ich verwende NetworkX routinemäßig ohne Probleme mit Diagrammen mit 1 Million Knoten (es ist ungefähr doppelt so viel Aufwand wie bei einem Diktat der Größe V + E).

Wenn Sie einen Funktionsvergleich wünschen, lesen Sie dies in der Networkx-Diskussionsliste

Funktionsvergleichsthread

Gregg Lind
quelle
4
Insbesondere, was ich an Networkx mag ... es ist meistens in Python, einfach zu bearbeiten und den Quellcode zu verstehen, und es fühlt sich meistens "pythonisch" an.
Gregg Lind
1
Ich habe mich gefragt, haben Sie es mit einem * oder ähnlichen Algorithmen verwendet?
Dassouki
4
Ich habe gerade beide bewertet. networkxist über installierbar pip, während igraphnicht. Dies erschwert igraphdie Verwendung als Abhängigkeiten in Ihren setup.pyDateien.
Exhuma
3
Als Update für 2013 gehe ich mit networkx nur b / c es hat einen Github und sieht von allen Optionen in dieser Antwort und den anderen
am aktuellsten aus
1
igraph hat auch einen Github: github.com/igraph/python-igraph
user_1_1_1
105

Ich möchte meine eigene Graph-Python-Bibliothek anschließen: graph-tool .

Es ist sehr schnell, da es in C ++ mit der Boost Graph Library implementiert ist und viele Algorithmen und umfangreiche Dokumentationen enthält.

Tiago Peixoto
quelle
6
Grafik-Tool ist fantastisch.
Sean
5
+1 Für Grafikwerkzeug. Wir haben es in unserem Labor verwendet. Es ist sehr schnell im Vergleich zu anderen Python-Bibliotheken. Außerdem ist das Zeichnen und Anzeigen von Grafiken im Grafikwerkzeug ziemlich beeindruckend. Das Kompilieren nimmt allerdings viel Zeit in Anspruch!
Dilawar
5
Leider keine Windows-Unterstützung :(
Mike Chaliy
2
@TiagoPeixoto Das sieht so vielversprechend aus, kann aber nicht unter Windows verwendet werden. Ich bin mit NetworkX festgefahren und finde es zu langsam.
Naman
2
@ColonelPanic Dies ist eine FAQ, siehe graph-tool.skewed.de/download : "Die kurze Antwort lautet, dass dies nicht möglich ist, da das Graph-Tool entscheidend von einigen (ausgezeichneten) C ++ - Bibliotheken wie Boost abhängt nicht über pip installierbar. "
Tiago Peixoto
32

Haben Sie sich Python-Graph angesehen ? Ich habe es selbst nicht benutzt, aber die Projektseite sieht vielversprechend aus.

fällinde
quelle
10

Vielleicht möchten Sie auch einen Blick auf NetworkX werfen

lmount
quelle
6

Verwenden Sie die Boost Graph Library - Python Bindings .

Frank
quelle
1
Netter Dehmann, ich habe mich zuerst dafür entschieden (ein C ++ - Programmierer von Beruf und absolut liebevoller Boost), aber das macht mir Angst: BGL-Python-Bindungen werden nicht mehr gepflegt <a top of page>
cpatrick
3
Schauen Sie sich stattdessen das Graph-Tool an, es ist bgl-basiert und aktiv.
Sean
0

Ich habe das meiste Glück mit Pydot. Einige der anderen sind auf verschiedenen Plattformen wie Win 7 schwer zu installieren und zu konfigurieren.

http://code.google.com/p/pydot/

syvex
quelle
0

Ich stimme dem Vorschlag der zweiten Linlinde zu, Python-Graph zu verwenden. Ich habe es als Grundlage für ein graphbasiertes Forschungsprojekt verwendet, an dem ich arbeite. Die Bibliothek ist gut geschrieben, stabil und hat eine gute Oberfläche. Die Autoren reagieren auch schnell auf Anfragen und Berichte.

jtguerin
quelle