小编use*_*034的帖子

外部标记节点,与networkx中的其他节点/边缘重叠最小

我正在尝试创建一个在节点外打印节点标签的图形.我能够生成如下所示的"偏移"来解决目的.但是,有时标签与边缘重叠(这是不合需要的,因为在节点周围有很多空白区域可以打印相应的标签).我需要以这样的方式标记这些节点,使得标签不与任何边缘重叠,或者至少尽可能地尽量减少重叠.

import networkx as nx
from networkx.utils import is_list_of_ints, flatten
import matplotlib.pyplot as plt

G=nx.Graph()

G = nx.complete_graph(5)
mapping = {0:'aaaaaaa',1:'bbbbbbb',2:'ccccccc', 3:'dddddddd', 4:'eeeeeeeee'}
G = nx.relabel_nodes(G,mapping)

plt.figure(figsize=(10,10), facecolor="w", frameon=False)
pos = nx.graphviz_layout(G, prog="fdp") #calculate position (x,y) coordinates
nx.draw_networkx_nodes(G,pos,node_size=1200,node_shape='o',node_color='0.75')
nx.draw_networkx_edges(G,pos, width=2,edge_color='b')


#for labeling outside the node
offset =10
pos_labels = {}
keys = pos.keys()
for key in keys:
    x, y = pos[key]
    pos_labels[key] = (x, y+offset)
nx.draw_networkx_labels(G,pos=pos_labels,fontsize=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

networkx中是否有任何可以处理这种情况的功能.我google了很长时间没有成功.

python label nodes networkx

19
推荐指数
1
解决办法
2725
查看次数

标签 统计

label ×1

networkx ×1

nodes ×1

python ×1