2015-06-28 3 views
1

Я новичок в igraph, пытаясь построить график содержит ~450k вершины.график графика графика: убитый 9

Я начал с делать некоторые эксперименты:

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. 

Затем я загрузил мой -vertice граф ~450k и была ошибка построения графика. Я думал, что это потому, что график был тоже большой. Итак, я попытался черчения с меньшим графа, как следующее:

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" 

Однако, у меня была такая же проблема с этим графиком.

Поскольку я умею рисовать небольшой график и не могу нарисовать большой, я не уверен, что это проблема синтаксиса, или igraph не обрабатывает большие графики?

Я использую Mac OS X. Python 2.7.6. igraph 0.7.1.

ответ

2

Ваш «меньший» граф фактически содержит 91395 вершин. Идентификаторы вершин в igraph являются целыми числами от нуля до | V | -1, поэтому, как только вы создаете ребро с конечной точкой 91394, вы также создаете 91395 вершин (если они раньше не существовали). Кроме того, я уверен, что построение такого большого графика не будет работать из коробки, или даже если это сработает, в конце концов, вы получите только огромный шарик, поскольку большинство алгоритмов компоновки не предназначены для обработки графиков этого размер. Среди тех, которые включены в igraph, только алгоритм DrL масштабируется правильно до действительно больших графиков (или, возможно, сетчатый макет Fruchterman-Reingold), но даже тогда вам нужно будет сделать много настроек с размерами вершин и шрифтов, чтобы получить то, что даже отдаленно полезно.

Смежные вопросы