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

use*_*243 3 python graph networkx

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

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 = [ (2,1), (1,4), (4,3), (3,11), (1,0), (0,3), (11,10)]
for r in routes:
     G.add_nodes_from(r)
G.add_edges_from(edges)

print("Graph has %d nodes with %d edges" %(G.number_of_nodes(),    
G.number_of_edges()))
nx.draw_networkx(G,with_labels=True)
plt.savefig('this.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)

Joe*_*oel 7

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

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')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


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

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

2)我还pos为 中的节点定义了一组位置G,因为我将需要多次绘制事物,并且每次绘制时我都需要确保它们位于同一位置。

3)绘制我使用的边的子集nx.draw_networkx_edges并向它发送要绘制的边列表。我在这一点上指定了颜色(以及厚度)。