Pergunta

Estou tentando fazer algumas visualizações gráficas interativas em meu aplicativo Web Django usando Python.Encontrei o Graphviz e consegui gerar um gráfico estático (como uma imagem .png) em meu aplicativo usando Pydot (interface Python para a linguagem de pontos do Graphviz).

No entanto, estou procurando tornar meus gráficos mais interativos, como poder destacar nós ao passar o mouse sobre eles, tornar os nós clicáveis, arrastar os nós para um local diferente e aplicar zoom no gráfico.

Existe uma maneira de fazer isso no Graphviz?Ou, em geral, existe uma maneira de criar um gráfico interativo para meu aplicativo Django sem precisar usar o Flash?Não quero usar flash porque não estou familiarizado com ele e também porque quero visualizar um conjunto de dados bastante grande.

Foi útil?

Solução

tente o javascript infovis toolkit .Tudo é implementado em uma tela do navegador, portanto, nenhum flash é necessário, apenas um navegador decente com suporte para a tag <canvas>.Exemplos de visualização de gráfico são aqui , aqui e Aqui , outras demonstrações são aqui .

Outras dicas

LANDZ ( Fonte ).No entanto, os nós ainda não estão clicáveis (eles estavam em uma versão mais antiga que usava mapas de imagem. A base de código foi alterada e agora a renderização está acontecendo ao cliente usando JavaScript, e é por isso que links clicáveis ainda não estão ativados.

Este é o melhor que encontrei, no entanto, eles são muitos outros.

mxGraph (não livre)

você pode usar d3.js para visualização do gráfico (consulte Aqui para exemplos de visualizações de gráfico em D3Js e veja Como fazer uma visualização de rede interativa ).

Para back-end (se for necessário ter algo mais do que apenas um arquivo JSON para representar o gráfico - ou seja, se for grande), você poderá usar um módulo Python para gráficos, Networkx .

Note lateral, aqui é Meu simples Exemplo de visualização de gráfico interativo :

Digite a descrição da imagem aqui

Você pode fazer algo assim de maneira muito simples, apenas com DOT e HTML.

Gere mapas do lado do cliente e sobreponha-os às imagens PNG.(Insira o código do mapa na página HTML.)

dot test.dot -Tpng -o test.png -Tcmapx -o test.map

As exportações SVG podem ser clicadas diretamente.

Parece uma abordagem que se encaixa no que você está tentando fazer pode ser usar o SVG no navegador um / ou JavaScript.Eu acho que a maioria dos navegadores modernos suporta o SVG e permitiria que você faça alguns gráficos interativos muito legais.O servidor pode fornecer um feed JSON dos Datapoints necessários para renderizar o gráfico.Eu não sei fora das ferramentas disponíveis, mas eu vi algumas demonstrações de gráfico bem legal construídas sem piscar através de abordagens do lado do cliente.

Como alternativa, você pode pré-renderizar um monte de imagens gráficas que o usuário provavelmente visualizaria e, em seguida, apenas buscará aqueles que o usuário interage com o gráfico.Isso pode funcionar se os gráficos não mudarem com freqüência e se o número de alterações que o usuário faria é pequeno, mas você teria que restringir novamente toda vez que o gráfico alterar.

Eu fiz o que você está tentando não há muito tempo. O contexto foi visualizar um esquema de vendas em giratório.

primeira coisa, o Graphviz é bom para plotagem, não é realmente para desenho. Você pode gerar svg, mas eu não consegui que isso funcione com o i.e. depois de um esforço considerável de (o que acabou sendo infrutífero).

Eu encontrei este applet java zgrviewer para ser suficiente, e enquanto os applets se sentem um pouco datado por meu gosto, funcionou muito bem cruzeiro.

Eu basicamente codificaram um processo invocando o serviço que gerou os arquivos de pontos e os pensava (Dotty, é pensar?) - O applet de visolazação lê o formato de arquivo de ponto nativo.

Eu também vim acontecendo algo que eu pensei em um v2 (que nunca aconteceu) - faz parte do kit de ferramentas de controle Ajax - seadragon .

Se você quiser ver o código no ASP.NET, posso postar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top