Вы можете установить атрибуты узла и края в NetworkX, которые затем можно использовать, например, для настройки определенных аспектов графика. В этом случае вы можете установить цветовой атрибут по краям графика и использовать этот атрибут для установки edge_color
в nx.draw
. Вот как вы могли бы сделать это с примерами путей, которыми вы поделились:
import networkx as nx
from matplotlib import pyplot as plt
path_car1 = ['cityA','cityB','cityD']
path_car2 = ['cityZ','cityA','cityK']
paths = [path_car1, path_car2]
colors = ['Red','Blue']
Теперь создайте ориентированный граф, итерируйте по спискам путей и назначенным цветам, чтобы добавить их как ребра, соответствующие атрибуты :
G = nx.DiGraph()
for path, color in zip(paths, colors):
for edge in zip(path[:-1], path[1:]):
G.add_edge(*edge, color=color)
Вы можете получить значения данного атрибута для всех ребер с помощью:
edge_colors = nx.get_edge_attributes(G, 'color')
Теперь при построении графика вы можете установить цвета ребер с помощью аргумента edge_color
:
plt.figure(figsize=(10,7))
pos = nx.spring_layout(G, scale=20)
nx.draw(G, pos,
node_color='black',
with_labels=True,
node_size=1200,
edgelist=G.edges(),
edge_color=edge_colors.values(),
arrowsize=15,
font_color='white',
width=3,
alpha=0.9)