2016-11-14 2 views
0

Я пытаюсь определить вершину в python, используя igprah lybrari. Когда я пытаюсь определить его как одно целое, проблема не возникает, но если я хочу определить вершину как (координату x, y-координату) и добавить ребро между двумя вершинами, определенными как это, тогда у меня есть ошибка:определить вершину в python iGraph по координатам x, y

TypeError: only numbers, vertex names or igraph.Vertex objects can be converted to vertex IDs 

Так я пытался создать namedtupel

Coordinates = namedtuple('Coordinates','x,y') 
firstVertex = Coordinates(1,2) 
secondVertex = Coordinates(3,4) 

, а затем я попытался использовать неявное преобразование во время добавления краев между этим verteces, но он не работает.

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Coordinates' 

Есть ли способ, как определить вершину с й, у координаты и использовать его в igraph lybrary? Или есть лучший способ работы с такими графами, где мне нужно, чтобы мои вертексы определялись с помощью координат? Спасибо за вашу помощь.

ответ

0

igraph поддерживает только целые числа или строки как идентификаторы вершин. Если вам нужно сохранить какие-либо дополнительные данные, относящиеся к вершине, вы должны сохранить их как атрибуты вершин. Например:

>>> g = Graph(3) 
>>> g.vs[0]["coordinates"] = (1, 2) 
>>> g.vs[1]["coordinates"] = (3, 4) 

Это присвоит (1, 2) атрибуту "coordinates" вершин вершины 0, и (3, 4) в «координаты» атрибут вершинной вершины 1. В зависимости от того, что вы хотите достичь, это может быть лучше использовать два отдельные атрибуты вершин (x и y), поскольку они автоматически используются в качестве координат макета при построении графика. Например .:

>>> g.vs[0]["x"], g.vs[0]["y"] = 1, 2 

Существует также сокращенное обозначение для присвоения значений атрибута вершины для всех вершин:

>>> g.vs["x"] = [1, 2, 3] 
>>> g.vs["y"] = [2, 4, 6] 
>>> g.vs[0]["x"], g.vs[0]["y"] 
(1, 2) 
>>> g.vs[1]["x"], g.vs[1]["y"] 
(2, 4) 
>>> g.vs[2]["x"], g.vs[2]["y"] 
(3, 6) 
Смежные вопросы