[英]How do I add weights to edge labels in a directed graph created using python igraph?
我开始将python igraph
与networkx
结合使用,因为前者已实现了network community detection
最新进展。
现在,我仅从加权的非对称邻接矩阵和节点标签字典开始。 我在networkx
创建一个有向图G,然后将其转换为igraph
graph, g
,并在igraph
中igraph
带有标记节点的结果。
import numpy as npy
import networkx as nx
import igraph as ig
# Create adjacency matrix, A, and corresponding directed graph in networkx
A=npy.matrix([[4,7,7,0,0],[3,0,6,0,0],[7,6,0,2,1],[0,0,2,0,4],[0,0,1,4,0]])
G = nx.from_numpy_matrix(A, create_using=nx.DiGraph)
# Dictionary of node labels, simply 'A', 'B', ...'E' for this example
labels_dict={0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'}
labels=list(labels_dict.values())
# Convert networkx graph to igraph
nx.write_graphml(G,'graph.graphml')
g = ig.read('graph.graphml',format="graphml")
# Plot directed graph using igraph with labeled vertices,
ig.plot(g,vertex_label = labels)
这将创建所需的图形,但是我想知道用edges
的相应权重labelling
edges
的最有效方法。
这有效:
ig.plot(g,vertex_label = labels,vertex_label_size = 10, vertex_size = 20
,edge_label = [edge for edge in g.es['weight']],edge_width = [.25*edge for edge
in g.es['weight']])
圆弧可能很难看到每个边缘与哪个权重相关联,可以通过添加选项edge_curved = 0来解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.