2016-02-19 2 views
0

Я запускаю алгоритм кратчайшего пути Dikjstra на произвольно сгенерированном графике NetworkX Watts-Strogatz, и я хочу покрасить края пути, который я нашел иначе, чем остальные края перед Я рисую график. АлгоритмPython: раскрашивание конкретных краев в NetworkX

My Дейкстры возвращает список узлов в пути следующим образом:

dijkstra(graph, '5', '67') 
['67', '62', '59', '56', '3', '99', '5'] 

Как будет идти об изменении цвета границ между этими узлами сказать синий вместо красного?

Обратите внимание, что график генерируется случайным образом, поэтому путь изменяется каждый раз, но он всегда выводит узлы в пути в виде списка.

Первоначально я пытался что-то вдоль линий:

for i in range(path.__len__()): 
     if i != path.__len__()-1: 
      wsGraph.add_edge(path[i], path[i]+1, color='b') 

Но это не изменило края, а просто добавил, что выглядело как новые узлы.

+0

Никогда не добавляйте ответ на теле вопроса. Отправьте новый ответ и отметьте его как принятый вместо этого. –

+0

Получил! Отредактировано и добавлено ниже. – AMargheriti

ответ

0

Я прибегая к помощи в течение 1 часа, прежде чем отправлять на этот вопрос и только после того, как я отправил, я предложил этот предыдущий вопрос: python networkx - mark edges by coloring for graph drawing

Какой-то отвечает на мои вопросы. Мне просто нужно, чтобы изменить его немного следующим образом:

for e in wsGraph.edges(): 
    wsGraph[e[0]][e[1]]['color'] = 'grey' 
# Set color of edges of the shortest path to green 
for i in range(len(path)-1): 
    wsGraph[int(path[i])][int(path[i+1])]['color'] = 'red' 
# Store in a list to use for drawing 
edge_color_list = [wsGraph[e[0]][e[1]]['color'] for e in wsGraph.edges() ] 
nx.draw(wsGraph, node_color='blue', edge_color = edge_color_list, with_labels = True) 
plt.show() 

Мне просто нужно, чтобы преобразовать свой путь до целых чисел вместо символов. Я также изменил цвета узлов и непутных краев, чтобы сделать его более понятным.

Изображение результата: Shortest path between 5 and 13 in a randomly generated 25-node Watts-Strogatz graph using my own Dijkstra's algorithm.

Смежные вопросы