繁体   English   中英

Python networkx边缘和节点标注问题

[英]Python networkx edge and node labeling problem

我是 Python 的新手,我想绘制一个关联图,但标签已更改。 我希望他们从“1”开始标记节点,而不是从“0”开始。 我也想像这样 label 边缘:如果它在节点'1'和'2'之间,label 它是'12'或'1:2'。 提前致谢:)

im = np.array([[1, 1, 0, 0, 0, 0], [1, 0, 1, 1, 0, 0], [0, 1, 1, 0, 1, 0], [0, 0, 0, 1, 1, 1], [0, 0, 0, 0, 0, 1]])
am = (np.dot(im, im.T) > 0).astype(int)
np.fill_diagonal(am, 0)
K = nx.from_numpy_matrix(am)

pos = nx.spring_layout(K)
print(pos)

x=1
nx.relabel_nodes(K, lambda x: x + + 1)
nx.draw(K, pos, with_labels=True)

edge_labels = dict(((u, v), d) for u, v, d in K.edges(data=True))
nx.draw_networkx_edge_labels(K, pos, edge_labels = edge_labels, label_pos=0.5)

plt.show()

所需边缘标签的示例

然后按照您目前所做的那样构建您想要的 label。 我会将其分解为基本操作; 您可以根据需要再次构建它:

edge_labels = dict(((u, v), 
                    str(u+1) +":"+ str(v+1) +" "+ str(d))
                    for u, v, d in K.edges(data=True))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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