此代码生成下图。因为你的路径是重叠的,所以我用不同的厚度绘制了它们,这样你就可以看到它们了。在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')
那么我对你的代码做了什么改变?在
1)最主要的是我为每个路径创建了所有边的列表(route_edges)。在
2)我还为G中的节点定义了一组位置pos,因为我需要多次绘制内容,并且每次绘制时都要确保它们在同一位置。在
3)为了绘制边缘的子集,我使用nx.draw_networkx_edges并向它发送了一个要绘制的边列表。我指定了此时的颜色(以及厚度)。在