如何舍入与networkx图中的边标签相对应的值?

fis*_*acp 4 python networkx

我正在 networkx 中绘制一个无向加权图,并希望用相应的权重标记每个边。我可以做到这一点,但我在四舍五入边缘标签值时遇到问题,以便生成的图表不会太混乱。

我们假设我已经创建了邻接矩阵 A,并且 labels_dict 是一个字典,其值是每个节点的文本标签,例如“T8-P8”。

import networkx as nx
G=nx.from_numpy_matrix(A)
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,nodelist=[j for j in 
range(0,len(A))],node_color='gray',node_size=1000,ax=None,alpha=0.8)
nx.draw_networkx_labels(G,pos,labels_dict,font_size=17)
nx.draw_networkx_edges(G,pos,width=1.0,alpha=0.5)

# below I attempt to round off the edge label values to 2 decimal places using numpy's "around" function.
edge_labels=dict([((u,v,),np.around(d['weight'],2))
for u,v,d in G.edges(data=True)])
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)
ax=plt
ax.axis('off')
fig = ax.gcf()
plt.show()
Run Code Online (Sandbox Code Playgroud)

生成的图表如下所示,显示了边缘标签如何尚未四舍五入:

在此输入图像描述

Pau*_*sen 5

将标签作为字符串(不是浮点数)传递,并使用字符串格式化工具进行字符串格式化:

edge_labels = dict([((u,v,), f"{d['weight']:.2f}") for u,v,d in G.edges(data=True)])
Run Code Online (Sandbox Code Playgroud)

我并没有尝试像你那样做。不。