我試圖創建一個節點標籤在節點外部打印的圖。我能夠生成如下所示的'抵消',以解決目的。但是,有時候標籤會與邊緣重疊(這是不理想的,因爲節點周圍有很多可以打印相應標籤的空白空間)。我需要爲這些節點添加標籤,使標籤不會與任何邊緣重疊,或者儘可能地儘量減少重疊。外部標籤節點與網絡x中其他節點/邊緣的最小重疊
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()
是否有networkx可以對付這種情況的任何功能。我搜索了很長時間沒有成功。
你有沒有想過把標籤當作節點本身,可能是因爲它們標記的節點有一個隱藏的邊緣? – 2015-05-08 18:22:00