我使用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
答案 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')
那么我从你的代码中改变了什么?
1)主要是我创建了每条路径的所有边缘列表(route_edges)。
2)我还为pos
中的节点定义了一组位置G
,因为我需要多次绘制事物,我需要确定它们在同一个地方每次我画。
3)为了绘制我使用nx.draw_networkx_edges
的边缘的子集,并将其边缘列表发送给绘图。我指定了此时的颜色(以及厚度)。