我正在 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)
生成的图表如下所示,显示了边缘标签如何尚未四舍五入:
将标签作为字符串(不是浮点数)传递,并使用字符串格式化工具进行字符串格式化:
edge_labels = dict([((u,v,), f"{d['weight']:.2f}") for u,v,d in G.edges(data=True)])
Run Code Online (Sandbox Code Playgroud)
我并没有尝试像你那样做。不。
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |