2015-12-06 95 views
2

我使用networkx来研究图论的实现,我想知道是否有一种方法可以标记给定图中的某些边?例如,假设我有一个图G,并且我找到了从节点x到节点y的最短路径,那么我如何标记路径,以便在绘制图时它将以不同的颜色绘制?python networkx - 通过为图形着色标记边缘

+0

有无你看着'networkx。 set_edge_attributes'? –

+0

我看了,但我不太明白如何使用它来达到我的目的 – Meni

回答

3

标记边缘可以通过设置一个属性颜色例如用于每个边缘的颜色,然后在绘图时使用这些颜色列表来完成。着色的最短路径中的节点蓝色 2之间例如0和3在8个节点的鄂尔多斯-仁义图表可以做如下:

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() 

输出图: enter image description here