在python iGraph中定义顶点由x,y坐标

问题描述:

我想用igprah lybrari在python中定义一个顶点。当我尝试将它定义为一个整数没有问题,但如果我想定义一个顶点作为(x坐标,y坐标),并添加2像这样定义的verteces边缘然后我有一个错误:在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' 

有没有办法如何用x,y坐标定义顶点并在igraph lybrary中使用它?或者有更好的方式来处理这种图形,我需要用坐标定义我的顶点?谢谢你的帮助。

igraph仅支持整数或字符串作为顶点ID。如果您需要存储与顶点有关的其他数据,则必须将其存储为顶点属性。例如:

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

这将分配(1, 2)顶点0的"coordinates"顶点属性,并(3, 4)的“坐标”顶点1的顶点属性取决于你想要达到的目标,它可能是更好的使用两个单独的顶点属性(xy),因为它们在绘制图形时会自动用作布局坐标。例如: -

>>> 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)