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.
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.
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 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 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.
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.
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.
Odpowiedzi:
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
źródło
networkx
jest instalowany przezpip
, podczas gdyigraph
nie jest. Utrudniaigraph
to używanie zależności wsetup.py
plikach.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ę.
źródło
Czy spojrzałeś na graf python ? Sam go nie użyłem, ale strona projektu wygląda obiecująco.
źródło
Możesz także rzucić okiem na NetworkX
źródło
Użyj biblioteki grafów pomocniczych - powiązania w języku Python .
źródło
Spójrz na tę stronę dotyczącą implementacji wykresów w Pythonie .
Możesz także rzucić okiem na pygraphlib na sourceforge.
źródło
Mam najwięcej szczęścia z pydotem. Niektóre inne są trudne do zainstalowania i skonfigurowania na różnych platformach, takich jak Win 7.
http://code.google.com/p/pydot/
źródło
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.
źródło