Как показать граничные надписи на DiGraph draw_networkx - PullRequest
0 голосов
/ 25 августа 2018

У меня есть nx.DiGraph вот так (пример с игрушкой)

import networkx as nx
G = nx.DiGraph()
G.add_node('a', weight= 1)
G.add_node('b', weight= 2)
G.add_node('c', weight= 3)
G.add_edge('a', 'b', range = 10)
G.add_edge( 'b','a', range = 20)
G.add_edge('a', 'c', range = 10)
G.add_edge( 'c','a', range = 20)
G.add_edge('c', 'b', range = 10)
G.add_edge( 'b','c', range = 20)

И я строю ничью, как показано ниже

plt.figure(figsize=(5,5))
edge_labels = nx.get_edge_attributes(G,'range')
edge_size= [edge_labels[v] for v in edge_labels]
node_labels = nx.get_node_attributes(G,'weight') 
node_size = [node_labels[v] for v in node_labels]
pos = nx.spring_layout(G) # circularspring_layout, scale=1., center=None
nx.draw_networkx_edge_labels(G,pos, edge_labels = edge_labels, font_size=25, font_color='k')
nx.draw_networkx(G, pos,  node_size=[d['weight']*2000 for _, d in G.nodes(data=True)], edge_color='.4', 
                 node_color= [d['weight'] for _, d in G.nodes(data=True)], alpha=0.6,with_labels=True,  width = [d['range'] for _, _, d in G.edges(data=True)],
                cmap=plt.cm.seismic, font_size =30, arrows = False) # 
plt.axis('off')
plt.tight_layout()
plt.show()

Я хочу показать метки ребер на ничьей (ребраатрибут 'range'), но одна метка накладывается на другую, и мы видим только одну (просто range = 10, но есть range = 20).Как это исправить?enter image description here

1 Ответ

0 голосов
/ 25 августа 2018

Вы можете попробовать установить атрибут label_pos в draw_networkx_edge_labels на значение, отличное от 0,5 (середина края), например 0,3

...