Python Networkx:如何绘制彩色边?

Python Networkx:如何绘制彩色边?,python,networkx,Python,Networkx,我使用以下代码构建了一个图表: G = networkx.Graph() G.add_edges_from([list(e) for e in P + Q + R]) colors = "bgrcmyk" color_map = [colors[i] for i in range(n/2)] # add colors for i in range(len(P)): edge = list(P[i]) G[edge[0]][edge[1]]['edge_color'] =

我使用以下代码构建了一个图表:

G = networkx.Graph()
G.add_edges_from([list(e) for e in P + Q + R])    
colors = "bgrcmyk"
color_map = [colors[i] for i in range(n/2)]

# add colors
for i in range(len(P)):
    edge = list(P[i])
    G[edge[0]][edge[1]]['edge_color'] = color_map[i]

for i in range(len(P)):
    edge = list(Q[perms[0][i]])
    G[edge[0]][edge[1]]["color"] = color_map[perms[0][i]]

for i in range(len(P)):
    edge = list(R[perms[1][i]])
    G[edge[0]][edge[1]]["color"] = color_map[perms[1][i]]
然后,我使用以下方式显示:

networkx.draw(G)
matplotlib.pyplot.show()

它显示的很好,除了所有的边缘都是黑色,而不是我在上面的代码片段中尝试指定的颜色。有什么想法吗?

嗯,终于找到了我需要做的事情。颜色显然需要分开,网络需要用
draw\u networkx
绘制。因此,上述三个
for
循环将替换为:

pos=networkx.spring_layout(G)
for i in range(len(P)):
    networkx.draw_networkx_edges(G,pos,
                edgelist=[list(P[i]), list(Q[perms[0][i]]), list(R[perms[1][i]])],edge_color=color_map[i], width="8")
文档字符串显示:

边缘颜色:颜色字符串或浮点数数组 边缘颜色。可以是单色格式字符串(默认值为='r'), 或者是一系列与edgelist长度相同的颜色。 如果指定了数值,它们将被映射到 使用edge_cmap和edge_vmin、edge_vmax参数的颜色


无需在循环中绘制边即可完成此操作。对于较大的图形,它将更快

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
# example graph 
for color in "bgrcmyk":
    G.add_edge('s'+color,'t'+color, color=color)

# edge_color_attr = nx.get_edge_attributes(G,'color')
# edges = edge_color_attr.keys()
# colors = edge_color_attr.values()
edges,colors = zip(*nx.get_edge_attributes(G,'color').items())
nx.draw(G,edgelist=edges,edge_color=colors,width=10)
plt.show()

嘿我想我正在尝试做一些类似于你所做的事情。你的目标是用不同的颜色给边缘上色,对吗?我也想这样做。你的P、Q和R对应什么?谢谢P、 Q和R是{1,2,…,n}的分区,分成大小为2的部分。你可以在那里找到关于我试图做什么的更多细节: