Alguém pode recomendar uma biblioteca Python que pode fazer visualização gráfica interativa ?
Eu quero especificamente algo como d3.js, mas para python
e idealmente seria 3D também.
Eu olhei para:
- NetworkX - ele só faz
Matplotlib
plotagens e parecem ser 2D. Não vi nenhum tipo de interatividade, como aquela qued3.js
dá, como puxar nós ao redor. - ferramenta de gráfico - faz apenas plotagens 2D e tem gráficos interativos muito lentos .
python
graph
d3.js
graph-tool
Eiyrioü von Kauyf
fonte
fonte
Respostas:
Você pode usar d3py um módulo python que gera páginas xml incorporando o script d3.js. Por exemplo :
fonte
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. Eu verifiquei o commit mais recente do d3py no github (SHA: 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)Plotly suporta gráficos 2D e 3D interativos. Os gráficos são renderizados com D3.js e podem ser criados com uma API Python , matplotlib , ggplot para Python , Seaborn , prettyplotlib e pandas . Você pode aplicar zoom, panorâmica, ativar e desativar os traços e ver os dados ao pairar. Os gráficos podem ser incorporados em HTML, aplicativos, painéis e Notebooks IPython. Abaixo está um gráfico de temperatura mostrando a interatividade. Veja a galeria de tutoriais do IPython Notebooks para mais exemplos.
Os documentos fornecem exemplos de tipos de plotagem e fragmentos de código suportados.
Especificamente para sua pergunta, você também pode fazer plotagens interativas do NetworkX.
Para plotagem 3D com Python, você pode fazer plotagens 3D de dispersão, linha e superfície que são igualmente interativas. Os gráficos são renderizados com WebGL. Por exemplo, veja um gráfico 3D das taxas de swap do Reino Unido.
Divulgação: estou na equipe do Plotly.
fonte
Você já olhou vincent? Vincent pega objetos de dados Python e os converte para a gramática de visualização Vega. Vega é uma ferramenta de visualização de alto nível construída sobre o D3. Em comparação com o D3py, o repo vincent foi atualizado mais recentemente. Embora os exemplos sejam todos estáticos D3.
mais informações:
https://github.com/wrobstory/vincent
https://pypi.python.org/pypi/vincent/0.1.6
Os gráficos podem ser visualizados no Ipython, basta adicionar este código
Ou a saída para JSON onde você pode visualizar o gráfico de saída JSON no editor online Vega ( http://trifacta.github.io/vega/editor/ ) ou visualizá-los em seu servidor Python localmente. Mais informações sobre visualização podem ser encontradas no link pypi acima.
Não sei quando, mas o pacote Pandas deve ter integração D3 em algum ponto. http://pandas.pydata.org/developers.html
Bokeh é uma biblioteca de visualização Python que suporta visualização interativa. Seu back-end de saída principal é HTML5 Canvas e usa o modelo cliente / servidor.
exemplos: http://continuumio.github.io/bokehjs/
fonte
Uma receita que usei (descrita aqui: Co-Director Network Data Files em GEXF e JSON da OpenCorporates Data via Scraperwiki e networkx ) funciona da seguinte maneira:
O exportador JSON networkx assume a forma:
Como alternativa, você pode exportar a rede como um arquivo GEXF XML e, em seguida, importar esta representação para a biblioteca de visualização Javascript sigma.js .
fonte
Outra opção é o bokeh, que acabou de ser lançado na versão 0.3.
fonte
Para aqueles que recomendaram o pyd3 , ele não está mais em desenvolvimento ativo e indica o vincent . vincent também não está mais em desenvolvimento ativo e recomenda o uso do altair .
Portanto, se você quiser um d3 pythônico, use altair.
fonte
Tente https://altair-viz.github.io/ - o sucessor de d3py e vincent. Veja também
fonte
Confira python-nvd3 . É um wrapper python para nvd3. Parece mais legal do que d3.py e também tem mais opções de gráfico.
fonte
Eu sugeriria o uso de mpld3, que combina visualizações de javascript D3js com matplotlib de python.
A instalação e o uso são muito simples e tem alguns plugins legais e recursos interativos.
http://mpld3.github.io/
fonte
Plotly pode fazer coisas legais para você
https://plot.ly/
Produz gráficos altamente interativos que podem ser facilmente incorporados nas páginas HTML de seu servidor ou site privado usando sua API off-line.
Atualização: Tenho certeza sobre seus recursos de plotagem 3D, para gráficos 2D é incrível Obrigado
fonte
Você também pode optar por serializar seus dados e, em seguida, visualizá-los em D3.js, como feito aqui: Use Python e Pandas para criar um diagrama de rede direcionado à força D3 (ele vem com um notebook jupyter também!)
Aqui está a essência. Você serializa seus dados de gráfico neste formato:
Em seguida, você carrega os dados com d3.js:
Para a rotina
drawGraph
, indico o link, entretanto.fonte
Existe uma porta interessante de NetworkX para Javascript que pode fazer o que você quiser. Veja http://felix-kling.de/JSNetworkX/
fonte
Vejo:
Existe uma boa biblioteca de gráficos 3D interativos por aí?
A resposta aceita sugere o seguinte programa, que aparentemente tem ligações python: http://ubietylab.net/ubigraph/
Editar
Não tenho certeza sobre a interatividade do NetworkX, mas você pode definitivamente fazer gráficos 3D. Há pelo menos um exemplo na galeria:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
E outro exemplo nos 'exemplos'. Este, no entanto, requer que você tenha Mayavi.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
fonte
Eu tenho um bom exemplo de geração automática de diagramas de rede D3.js usando Python aqui: http://brandonrose.org/ner2sna
O legal é que você acaba com HTML e JS gerados automaticamente e pode incorporar o gráfico D3 interativo em um notebook com um IFrame
fonte
A biblioteca
d3graph
construirá um gráfico d3 direcionado à força a partir do python. Você pode "interromper" a rede com base no peso da borda e passar o mouse sobre os nós para obter mais informações. Clique duas vezes em um nó para focalizar o nó e suas arestas conectadas.Exemplo:
Um exemplo interativo do caso titânico pode ser encontrado aqui: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases .html
fonte