есть ли функция, которая рисует ребро со стрелкой в ​​середине ребра? - PullRequest
0 голосов
/ 29 мая 2019

Я хочу нарисовать ребро со стрелкой посередине.Я использую 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 голосов
/ 29 мая 2019

Networkx использует Matplotlib для рисования графиков. Для краев используется ArrowStyle . Вот возможные типы лезвий:

enter image description here

Так что нет, networkx не может рисовать наконечники стрел в середине края. Вы можете попытаться преобразовать его в формат DOT (или любой другой формат) и попытаться визуализировать его с помощью другого инструмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...