繁体   English   中英

如何在使用python igraph创建的有向图中将权重添加到边缘标签中?

[英]How do I add weights to edge labels in a directed graph created using python igraph?

我开始将python igraphnetworkx结合使用,因为前者已实现了network community detection最新进展。

现在,我仅从加权的非对称邻接矩阵和节点标签字典开始。 我在networkx创建一个有向图G,然后将其转换为igraph graph, g ,并在igraphigraph带有标记节点的结果。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM