更改 networkX 中边的颜色

Changing the color of edges in networkX

我正在使用 networkX 绘制图表。我想改变图表的颜色。我在互联网上关注样本,以下是我的代码:

def draw_graph():
    colors = []
    for i in range (nCount):
        for j in range (nCount):
            if ifActive(i,j,timeStep) == 1:
                colors.append("r")
                  
            else:
                colors.append("b")
                
    print ("colores = ", colors)                            
    color_map = []   
    nColor= nx.get_node_attributes(graph,'color')
    for nc in nColor:
        color_map.append(nColor[nc])
    nx.draw(graph,pos=nx.spring_layout(graph),edge_color = colors , node_color = color_map,with_labels = True )

但我遇到了以下错误:

edge_color must be a color or list of one color per edge

如何解决这个错误?

解决您的问题的一个简单方法是使用 networkx 的分离功能。 这是一个简单的例子:

import networkx as nx
import matplotlib.pyplot as plt

graph = nx.erdos_renyi_graph(30,0.4)

options = ['r','b']
colors = []
for i in range(len(graph.edges())):
    if(i%2 == 0):
        colors.append(options[0])
    else:
        colors.append(options[1])

plt.figure(figsize=(10,10))
pos = nx.spring_layout(graph)
nx.draw_networkx_nodes(graph,pos=pos)
nx.draw_networkx_edges(graph,edge_color=colors,pos=pos)

具有不同边缘颜色的 ER 网络示例:

编辑: 在您的 for 循环中,您正在考虑两次相同的边缘。尝试更改为以下内容:

for i in range (nCount):
    for j in range (0,i):
        if ifActive(i,j,timeStep) == 1:
            colors.append("r")
        else:
            colors.append("b")