Biblioteca de gráficos Python [fechada]

354

Estou escrevendo um aplicativo python que fará uso pesado de uma estrutura de dados de gráficos. Nada terrivelmente complexo, mas acho que algum tipo de biblioteca de algoritmos de gráficos / gráficos me ajudaria. Pesquisei no Google, mas não encontro nada que me salte particularmente.

Alguém tem alguma boa recomendação?

cpatrick
fonte
Quais algoritmos gráficos você está procurando?
Andrew
11
Amoss, eu estava procurando uma biblioteca de gráficos que pudesse calcular os caminhos mais curtos, considerando os pesos. Coisas básicas, realmente. Acabei indo com networkx. Funciona muito bem. Eu não toquei no projeto há um tempo, no entanto. Esta pergunta foi feita há mais de um ano.
Cpatrick 23/08/19
108
É chocantemente estranho que existam questões tão úteis e que muitos votos como este possam ser classificados como "não construtivos".
Jim Raynor
11
Você também pode usar "banco de dados de gráficos nativo" como neo4j e usar uma ligação python para discutir com o db?
A STEFANI
3
@ JimRaynor "Não construtivo" era um problema antigo. Os motivos mais próximos foram atualizados para melhor (não perfeitamente, mas melhor) cobrir o uso pretendido. Hoje, isso seria encerrado como uma pergunta de recomendação.
Jpmc26 23/0218

Respostas:

237

Existem duas excelentes opções:

NetworkX

e

igraph

Eu gosto do NetworkX, mas também li boas coisas sobre o igraph. Uso rotineiramente o NetworkX com gráficos com 1 milhão de nós sem problemas (é quase o dobro da sobrecarga de um ditado do tamanho V + E)

Se você deseja uma comparação de recursos, consulte isso na lista de discussão do Networkx

Tópico de comparação de recursos

Gregg Lind
fonte
4
Em particular, o que eu gosto no Networkx ... é principalmente em python, fácil de editar e entender o código-fonte, e parece principalmente "pitônico".
Gregg Lind
11
Fiquei me perguntando, você já usou isso com um * ou algoritmos similares?
Dassouki
4
Acabei de avaliar os dois. networkxé instalável via pip, enquanto igraphnão é. Isso igraphdificulta o uso como dependências em seus setup.pyarquivos.
Exhuma
3
Como uma atualização para 2013, eu estou indo com NetworkX apenas b / c ele tem uma github e aparência mais atualizada de todas as opções em esta resposta e os outros
Мати Тернер
11
O igraph também possui um github: github.com/igraph/python-igraph
user_1_1_1
105

Gostaria de conectar minha própria biblioteca python gráfica : graph-tool .

É muito rápido, pois é implementado em C ++ com a Boost Graph Library e contém muitos algoritmos e documentação extensa.

Tiago Peixoto
fonte
6
ferramenta gráfica é fantástica.
Sean
5
+1 Para ferramenta gráfica. Temos usado em nosso laboratório. É realmente rápido em comparação com outras bibliotecas python. Além disso, desenhar e exibir gráficos é bastante impressionante na ferramenta de gráficos. Demora muito tempo para compilar!
Dilawar
5
Infelizmente, não há suporte para Windows :(
Mike Chaliy /
2
@TiagoPeixoto Isso parece tão promissor, mas não pode ser usado no Windows. Estou preso ao NetworkX, achando muito lento.
Naman
2
@ColonelPanic Esta é uma FAQ, consulte graph-tool.skewed.de/download : "A resposta curta é que isso não pode ser feito, pois a ferramenta de gráfico depende crucialmente de algumas (excelentes) bibliotecas C ++, como o Boost, que são não instalável via pip ".
Tiago Peixoto
32

Você já viu o python-graph ? Eu não o usei, mas a página do projeto parece promissora.

zweiterlinde
fonte
10

Além disso, você pode dar uma olhada no NetworkX

Montar
fonte
6

Use a Boost Graph Library - Ligações Python .

Frank
fonte
11
Nice one dehmann, eu fui para esse primeiro (sendo um programador C ++ pelo comércio e absolutamente amar boost), mas isso assusta-me: ligações BGL-Python não está mais sendo mantido <a topo da page> são
cpatrick
3
Veja a ferramenta gráfica, que é baseada em bgl e ativa.
Sean
0

Estou tendo mais sorte com pydot. Alguns dos outros são difíceis de instalar e configurar em plataformas diferentes, como o Win 7.

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

syvex
fonte
0

A segunda sugestão de zweiterlinde é usar python-graph. Eu o usei como base de um projeto de pesquisa baseado em gráficos em que estou trabalhando. A biblioteca é bem escrita, estável e possui uma boa interface. Os autores também são rápidos em responder a perguntas e relatórios.

jtguerin
fonte