我正在使用networkx来研究图论实现,我想知道有没有办法在给定图中标记一些边? 例如 - 说我有一个图G并且我找到了从节点x到节点y的最短路径,我如何标记路径以便在绘制图形时它将以不同的颜色绘制?
答案 0 :(得分:4)
标记边缘可以通过设置属性颜色来实现,例如使用每个边缘所需的颜色,然后在绘制时使用这些颜色的列表。将2个节点之间的蓝色中的最短路径着色为例如8个节点的erdos-renyi图中的 0和3 ,可以按如下方式进行:
G = nx.erdos_renyi_graph(8,0.4)
p = nx.shortest_path(G,0,3)
# Set all edge color attribute to black
for e in G.edges():
G[e[0]][e[1]]['color'] = 'black'
# Set color of edges of the shortest path to green
for i in xrange(len(p)-1):
G[p[i]][p[i+1]]['color'] = 'blue'
# Store in a list to use for drawing
edge_color_list = [ G[e[0]][e[1]]['color'] for e in G.edges() ]
nx.draw(G,edge_color = edge_color_list, with_labels = True)
plt.show()