有没有在边缘的中间用箭头绘制边缘的功能?

时间:2019-05-29 13:48:35

标签: python-3.x networkx

我想画一条中间带有箭头的边缘。 我正在将networkx与python 3.6和mathblotlib一起使用以显示该图。

我尝试了很多方法,但是我刚刚收到了这个结果。

predecesseur={'1': nan, '2': nan, '3': '1', '4': '1,2', '5': '3,4'}
tachdu={'1': '2', '2': '4', '3': '4', '4': '5', '5': '6'}
G=nx.DiGraph()
G.add_node('Début',type ='0')
G.add_node('Fin',type ='0')
for key in predecesseur.keys():
    G.add_node(key,type =tachdu[key])
    ch=predecesseur[key]
    if type(ch)!=type(0.0):
        for i in range(len(ch)):
            if (ch[i]!=',' and ch[i]!=';'):
                G.add_edge(ch[i],key)
    else:
        G.add_edge('Début',key)

for nod in G:
    if list(G.successors(nod))==[]:
        G.add_edge(nod,'Fin')

pos_nodes = nx.spring_layout(G)
nx.draw(G, pos_nodes, with_labels=True)
color_map = ['green']
nx.draw_networkx_nodes(G, pos_nodes, node_size=500, nodelist=['Fin'],node_color=color_map)
nx.draw_networkx_nodes(G, pos_nodes, node_size=1400, nodelist=['Début'],node_color=color_map)
node_attrs = nx.get_node_attributes(G, 'type')
pos_attrs = {}
for node, coords in pos_nodes.items():
    pos_attrs[node] = (coords[0], coords[1] + 0.08)
custom_node_attrs = {}
for node, attr in node_attrs.items():
    custom_node_attrs[node] = "{" + attr + "}"
nx.draw_networkx_labels(G, pos_attrs, labels=custom_node_attrs)
plt.show()

1 个答案:

答案 0 :(得分:0)

Networkx使用Matplotlib绘制图形。对于边缘,它使用ArrowStyle。以下是可能的边缘类型:

enter image description here

因此,networkx无法在边缘的中间绘制箭头。您可以尝试将其转换为DOT格式(或任何其他格式),并尝试使用其他工具将其可视化。