/ / Grafico grafico igraph: ucciso 9 - python, igraph

grafico della trama di igraph: ucciso 9 - python, igraph

Sono nuovo a igraph, cercando di tracciare un grafico contiene ~450k vertici.

Ho iniziato a fare alcuni esperimenti:

import igraph
g = igraph.Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)])
igraph.plot( g, "result.pdf", layout = g.layout("kk") )
# works perfect.

Quindi, ho caricato il mio ~450k-Valore grafico e ha avuto un errore nel tracciare il grafico. Pensavo fosse perché il grafico era pure grande. Così, ho provato a tracciare con un grafico più piccolo come il seguente:

g = igraph.Graph( [(1, 63741), (2, 81483), (3, 91394), (4, 60469), (5, 60278), (6, 64544), (6, 73526), (8, 86588), (9, 61415)] )
igraph.plot( g, "result.pdf", layout = g.layout("kk") )
# does not work. produces:
# "Killed: 9"

Tuttavia, ho avuto lo stesso problema con questo grafico.

Dato che sono in grado di disegnare un piccolo grafico e non sono in grado di disegnarne uno grande, non sono sicuro che si tratti di un problema di sintassi o che l'igraph non gestisca grafici di grandi dimensioni?

Sto usando Mac OS X. Python 2.7.6. igraph 0.7.1.

risposte:

2 per risposta № 1

Il tuo grafico "più piccolo" contiene in realtà 91395vertici. Gli ID vertici in igraph sono numeri interi da zero a | V | -1, quindi non appena crei uno spigolo con l'endpoint 91394, crei anche 91395 vertici (se non esistessero prima). Inoltre, sono abbastanza sicuro che tracciare un grafo così grande non funzionerebbe immediatamente, o anche se funzionasse, alla fine si otterrebbe solo un enorme bulbo di pelo perché la maggior parte degli algoritmi di layout non sono progettati per trattare grafici di queste dimensioni. Tra quelli inclusi in igraph, solo l'algoritmo DrL si adatta correttamente a grafici molto grandi (o forse il layout di Fruchterman-Reingold basato su griglia), ma anche in questo caso è necessario eseguire molte modifiche con il vertice e le dimensioni dei caratteri per ottenere qualcosa che è anche lontanamente utile.