for edge in graph.es:
source_vertex_id = edge.source
target_vertex_id = edge.target
source_vertex = graph.vs[source_vertex_id]
target_vertex = graph.vs[target_vertex_id]
# using get_eid() you can do the opposite:
same_edge_id = graph.get_eid(source_vertex_id, target_vertex_id)
same_edge = graph.es[same_edge_id]
# by .index you get the id from the Vertex or Edge object:
source_vertex.index == source_vertex_id
# True
edge.index == same_edge_id
# True
2条答案
按热度按时间y1aodyip1#
这些都是igraph的基本功能,详细描述了here。(
graph.es
),您将遍历所有<Edge>
对象(这里是edge
)。<Edge>
有属性source
和target
。这些是顶点id,简单的整数。你可以通过graph.vs[]
得到对应的<Vertex>
对象:字符串
如果你有有向图,请注意,否则源和目标只是两个等价的端点。对于有向图,你可以使用
error = False
和get_eid()
,如果顶点之间的给定方向没有边,则返回-1
。m528fe3b2#
这里有一个简单的方法,可以使用R中的内置函数
get.data.frame()
从igraph对象中获取边缘信息(我没有注意到这个问题是关于python的,对不起):字符串
edges_data_frame
的前两列将是“from”和“to”。如果有边,则后面的列将是边的其他属性。