2010-03-01 26 views
11

ho bisogno di visualizzare una relativamente grande grafico (6K nodi, 8K bordi) che ha le seguenti proprietà:cluster Grafici Tecniche di visualizzazione

  • gruppi distinti. Circa 50-100 nodi per cluster e interconnettività moderata a livello di cluster
  • minime (5-10 bordi tra cluster per cluster) interconnettività tra cluster

Let sovrapposizione bordo globale = Il bordo sovrapposizioni causato da visualizzare direttamente un grafico di Cluster = {A, B, C, D, E}, Bordi = {Pentagram di quei cluster, che è comunque non planare e genererà sicuramente la sovrapposizione dei bordi se lo si disegna direttamente}

Lasciare che Local Edge Overlap = sopra ma {A, B, C, D, E} sono solo nodi.

Ho bisogno di visualizzare i grafici con quanto sopra in un modo che soddisfi i seguenti requisiti

  • No bordo globale di sovrapposizione (cioè bordo sovrapposizioni causate da proprietà inter-cluster è non va bene)
  • locale sovrapposizione bordo all'interno di un cluster va bene

Chiunque ha pensieri su come visualizzare al meglio un grafico con i requisiti sopra?

Una soluzione che ho trovato per affrontare la sovrapposizione dei bordi globali è quella di assicurarsi che un cluster A possa avere solo un massimo di 1 fronte diretto su un altro cluster (B) durante la visualizzazione. Eventuali spigoli inter-cluster tra il cluster A -> C, A -> D, ... sono disconnessi e ulteriori nodi/spigoli A -> A_C, C -> C_A, A -> A_D, D -> D_A ... sono creati.

Qualcuno ha qualche idea?

+0

Sono un po 'confuso dal motivo per cui si desidera scollegare i bordi da un cluster a un altro dopo aver collegato il primo spigolo. Stai dicendo che stai disconnettendo gli altri lati perché quel gruppo di cluster è completamente connesso e quindi non è necessario rappresentare il resto delle connessioni? Se è così, perché non estrai ulteriormente il tuo livello di astrazione e hai cluster di cluster completamente connessi? –

risposta

1

Prefuse ha alcuni buoni algoritmi di disegno grafico link text integrati e sembra gestire abbastanza bene i grafici relativamente grandi. Si potrebbe provare Flow Map Layout che è stato costruito in cima a Prefuse.

0

Non ho visto troppi strumenti di visualizzazione del grafico che supportano la separazione dei cluster all'interno di un grafico visivo. Un'opzione potrebbe essere quella di dare un'occhiata a WilmaScope. Sembra avere qualche supporto per i layout basati su cluster.

1

Considerati i vostri obiettivi, penso che lo Fruchterman-Reingold algorithm svolga un lavoro abbastanza decente nel prevenire la sovrapposizione dei bordi. Si veda ad esempio questo screenshot di una rete composta da più componenti disegnati usando l'algoritmo Fruchterman-Reingold. IGraph ha il supporto integrato per questo algoritmo (come credo lo Networkx) ed è molto veloce.

+0

Ho provato il layout FR e alla fine ho deciso di non usarlo. FR ha la tendenza a occupare ogni spazio disponibile con un nodo e causare un casino in generale. Il miglior layout locale che ho provato è il Multilevel di YiFanHu seguito da ForceAtlas. Inoltre, la mia domanda precedente stava chiedendo delle tecniche di visualizzazione globale dei cluster :) – jameszhao00

0

Il layout organico gestisce i grafici in cluster in yFiles. Prova prima in yEd per vedere se fa ciò che è necessario. Probabilmente è ragionevole utilizzare i gruppi di alias dei grafi annidati per ciascun cluster. La disposizione organica ha una funzionalità chiamata Politica di layout di gruppo che può essere utilizzata se il layout deve essere eseguito utilizzando principi diversi per i bordi tra i cluster e intra-cluster, con layout incrementale. Con un certo sforzo, si può tradurre il grafico in GraphML per evitare il lavoro manuale.

1

C'è un programma creato in cima a Prefuse chiamato SocialAction. Devi richiedere il codice dall'autore, ma fa un sacco di analisi statistiche sul grafico per te, come l'identificazione di sottografi.L'ho usato su un grafico con oltre 18.000 nodi e, sebbene sia molto lento a quella scala, funziona ancora.