2013-02-12 14 views
12

Ho guardato attraverso Graphviz resources page e domande 1 e 2 e ancora non ho trovato risposta specifica. Il mio caso è sfogliare le dipendenze tra i componenti software (ad esempio pacchetti installabili), e una caratteristica particolare è che alcuni nodi comuni sono bersagli per molti lati. Ad esempio, quasi tutti i pacchetti eseguibili dipendono da libc.Visualizzatore Graphviz interattivo con filtro di nodo/bordo base

Sulla base di quel tratto, mi piacerebbe avere spettatore/biblioteca con seguenti funzionalità:

algos
  1. Usa Graphviz "dot" algoritmo di layout (layout di forza che sono un sacco in diverse librerie non forniscono buona qualità del layout per il caso d'uso discusso).
  2. Disattiva/riattiva in modo interattivo alcuni nodi in un grafico (esempio di libc sopra).
  3. Disattivare/riattivare in modo interattivo tutti i bordi da un nodo particolare (ad esempio, libpng dipende da libz, ma è ovvio e può essere disabilitato per non ingombrare vista).
  4. Grafico di re-root su un nodo (mostra sottografo con solo nodi raggiungibili da quel nodo) e "zoom indietro" per completare il grafico.

Idealmente, questa sarebbe una libreria Javascript, che consentirebbe l'implementazione di funzionalità di manipolazione più complesse. Ciò che è importante è che i comportamenti di visualizzazione di base come descritto sopra fossero disponibili immediatamente, di nuovo, non riuscivo a trovare qualcosa del genere, con molte soluzioni che erano o visualizzatori statici, o "editor di forma libera" che permettevano di trascinare i nodi, ma non qualcosa con comportamenti sufficientemente alti e utili.

Infine, se tale soluzione non esiste, i suggerimenti per il miglior framework per implementare tali funzionalità sono i benvenuti.

risposta

3

Ho trovato l'xdot.py di José Fonseca come un'applicazione estremamente interessante basata su Python e Cairo per la visualizzazione di file Graphviz. È così ben scritto e ha un'interfaccia utente così bella che ci si potrebbe chiedere perché è un po 'ad hoc nel suo supporto per l'interazione, non permettendo una maggiore estensibilità immediata. Al momento sto effettuando l'hacking su https://github.com/pfalcon/xdot.py

Aggiornamento: ho eseguito la prova di implementazione del concetto delle funzionalità sopra come filtered-viewer.py. Probabilmente verrà ribattezzato più tardi.

9

Gephi, https://gephi.org/, supporta molti formati di grafici, ovviamente, tra cui Graphviz dot. Può filtrare nodi o bordi e ha alcune funzioni di analisi.