Я смог заполнить сетевой график с помощью networkx. Моя проблема в том, что когда я хочу выделить путь (например, кратчайший путь), график не может быть сгенерирован, и он вернет ошибку ниже.
nx.draw_networkx_edges(Gr,pos,edgelist=path_edges,edge_color='r',width=10)
File "/usr/local/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py", line 578, in draw_networkx_edges
if not edgelist or len(edgelist) == 0: # no edges!
TypeError: object of type 'zip' has no len()
Я ищу решение, и это потому, что скрипт выполняется поверх python3 и из-за этого я получаю эту ошибку. Одним из решений является изменение и добавление списка, как показано ниже.
оригинал:
Gr = nx.DiGraph()
edges = graph
Gr.add_edges_from(edges)
pos = nx.spring_layout(Gr)
path = nx.shortest_path(Gr,source=1,target=7)
path_edges = zip(path,path[1:])
nx.draw_networkx_nodes(Gr,pos,nodelist=path,node_color='r')
nx.draw_networkx_edges(Gr,pos,edgelist=path_edges,edge_color='r',width=10)
plt.axis('equal')
plt.show()
Изменено:
path = nx.shortest_path(Gr,source=1,target=7)
path_edges = list(zip(path,path[1:]))
nx.draw_networkx_nodes(Gr,pos,nodelist=path,node_color='r')
nx.draw_networkx_edges(Gr,pos,edgelist=path_edges,edge_color='r',width=10)
plt.axis('equal')
plt.show()
Возможность запуска скрипта без ошибок и возможность для создания графика, но выделенный путь (красный) не выровнен по узлу и ссылке топологии. Красный путь должен быть сверху и выровнять узел / путь 1-2-3-4-5-6-7. Пожалуйста, обратитесь к изображениям ниже
Пожалуйста, посоветуйте, как решить эту проблему проблема.