如何使用不同的颜色绘制networkX图形的路径

时间:2015-07-13 04:59:03

标签: python graph networkx

我使用python networkX创建了一个图形,如下面的代码所示。 该图有三条路径,我想用不同的颜色绘制每条路径。 例如,我想使用红色,路径2(即[1,0,3,11,10]使用蓝色和路径3)绘制路径1(即[2,1,4,3,11])(即[10,11,3,4,1])使用黄色。 请问如何修改d代码以绘制具有指定颜色的图形?这是我的第一个使用python和networkX包的程序。

Cj > Ci

1 个答案:

答案 0 :(得分:4)

此代码生成下图。由于您的路径重叠,我用不同的厚度绘制它们,以便您可以全部看到它们。

import networkx as nx
import matplotlib.pyplot as plt
import random

G=nx.Graph(name="buba")
routes = [[2, 1, 4, 3, 11], [1, 0, 3, 11, 10], [10, 11, 3, 4, 1]]
edges = []
for r in routes:
    route_edges = [(r[n],r[n+1]) for n in range(len(r)-1)]
    G.add_nodes_from(r)
    G.add_edges_from(route_edges)
    edges.append(route_edges)

print("Graph has %d nodes with %d edges" %(G.number_of_nodes(),    
G.number_of_edges()))

pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos=pos)
nx.draw_networkx_labels(G,pos=pos)
colors = ['r', 'b', 'y']
linewidths = [20,10,5]
for ctr, edgelist in enumerate(edges):
    nx.draw_networkx_edges(G,pos=pos,edgelist=edgelist,edge_color = colors[ctr], width=linewidths[ctr])
plt.savefig('this.png')

enter image description here

那么我从你的代码中改变了什么?

1)主要是我创建了每条路径的所有边缘列表(route_edges)。

2)我还为pos中的节点定义了一组位置G,因为我需要多次绘制事物,我需要确定它们在同一个地方每次我画。

3)为了绘制我使用nx.draw_networkx_edges的边缘的子集,并将其边缘列表发送给绘图。我指定了此时的颜色(以及厚度)。