Python Graph Library [zamknięta]

354

Piszę aplikację python, która będzie intensywnie wykorzystywać strukturę danych wykresu. Nic strasznie skomplikowanego, ale myślę, że jakaś biblioteka wykresów / algorytmów graficznych pomogłaby mi. Grzebałem w Internecie, ale nie znajduję niczego, co szczególnie by mnie zaskoczyło.

Czy ktoś ma jakieś dobre rekomendacje?

cpatrick
źródło
Jakich algorytmów graficznych szukasz?
Andrew
1
Amoss, szukałem biblioteki grafów, która mogłaby obliczyć najkrótsze ścieżki przy podanych wagach. Podstawowe rzeczy, naprawdę. Skończyło się na networkx. Działa całkiem dobrze. Jednak od jakiegoś czasu nie dotykałem tego projektu. To pytanie zostało zadane ponad rok temu.
cpatrick
108
To szokująco dziwne, że pojawiają się pytania tak pomocne i zdobywające dużo głosów, jak ten, można zakwalifikować jako „mało konstruktywne”.
Jim Raynor
1
Możesz także użyć „rodzimej bazy danych grafów”, takiej jak neo4j, a następnie użyć powiązania w języku Python w celu omówienia z bazą danych?
A STEFANI,
3
@JimRaynor „Nie konstruktywny” był starym haczykiem. Najważniejsze przyczyny zostały zaktualizowane, aby lepiej (nie idealnie, ale lepiej) obejmowały zamierzone użycie. Dziś byłoby to zamknięte jako pytanie rekomendacyjne.
jpmc26

Odpowiedzi:

237

Istnieją dwie doskonałe opcje:

NetworkX

i

Igraph

Lubię NetworkX, ale czytam też dobre rzeczy o igraph. Rutynowo używam NetworkX z wykresami z 1 milionem węzłów bez problemu (jest to około dwukrotność obciążenia dyktasem wielkości V + E)

Jeśli chcesz porównać funkcje, zobacz to na liście dyskusyjnej Networkx

Wątek porównania funkcji

Gregg Lind
źródło
4
W szczególności to, co lubię w Networkx .... jest głównie w języku Python, łatwe do edycji i zrozumienia kodu źródłowego, i wydaje się głównie „pythoniczne”.
Gregg Lind,
1
Zastanawiałem się, czy używałeś go z * lub podobnymi algorytmami?
dassouki
4
Właśnie oceniłem oba. networkxjest instalowany przez pip, podczas gdy igraphnie jest. Utrudnia igraphto używanie zależności w setup.pyplikach.
ekshuma
3
Jako aktualizacja na 2013 rok, korzystam z networkx tylko b / c, ma github i wygląda najbardziej na bieżąco ze wszystkich opcji w tej odpowiedzi i innych
Мати Тернер
1
igraph ma również github: github.com/igraph/python-igraph
user_1_1_1
105

Chciałbym podłączyć własną bibliotekę graficzną Pythona: graph-tool .

Jest bardzo szybki, ponieważ jest zaimplementowany w C ++ z biblioteką grafów Boost i zawiera wiele algorytmów oraz obszerną dokumentację.

Tiago Peixoto
źródło
6
narzędzie graficzne jest fantastyczne.
Sean
5
+1 Dla narzędzia graficznego. Używaliśmy go w naszym laboratorium. Jest naprawdę szybki w porównaniu z innymi bibliotekami Pythona. Poza tym rysowanie i wyświetlanie wykresów jest całkiem niesamowite w narzędziu do tworzenia wykresów. Kompilacja zajmuje dużo czasu!
Dilawar
5
Niestety brak obsługi okien :(
Mike Chaliy,
2
@TiagoPeixoto Wygląda tak obiecująco, ale nie można go używać w systemie Windows. Utknąłem w NetworkX i stwierdziłem, że jest zbyt wolny.
Naman
2
@ColonelPanic To jest często zadawane pytania, patrz graph-tool.skewed.de/download : „Krótka odpowiedź jest taka, że ​​nie da się tego zrobić, ponieważ narzędzie do tworzenia wykresów zależy przede wszystkim od niektórych (doskonałych) bibliotek C ++, takich jak Boost, które są nie można zainstalować przez pip. ”
Tiago Peixoto,
32

Czy spojrzałeś na graf python ? Sam go nie użyłem, ale strona projektu wygląda obiecująco.

zweiterlinde
źródło
6

Użyj biblioteki grafów pomocniczych - powiązania w języku Python .

Szczery
źródło
1
Fajny, dehmann, poszedłem po raz pierwszy (będąc programistą C ++ z zawodu i absolutnie kochającym dopalaczem), ale to mnie przeraża: powiązania BGL-Python nie są już utrzymywane <a góra strony>
cpatrick
3
Zamiast tego spójrz na narzędzie graficzne, jest oparte na bgl i aktywne.
Sean
0

Po drugie sugeruję zweiterlinde, aby użyć grafu python. Użyłem go jako podstawy projektu badawczego opartego na grafie, nad którym pracuję. Biblioteka jest dobrze napisana, stabilna i ma dobry interfejs. Autorzy szybko reagują również na zapytania i raporty.

jtguerin
źródło