如何通过 for 循环在网络中分配颜色和边

How to assign colors and edges within a network through for loops

我正在通过使用 for 循环来缩小代码行来描绘一个无向图。但是,我面临两个问题

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_nodes_from(range(1,8,1))

我试图通过以下循环分配给每个节点的颜色没有出现在最终图中

color_list = []
for node in G.nodes:   # iteration over nodes
    if node < 4:
        color_list.append('gold')
    elif node >= 4: 
        color_list.append('violet')
    elif node == 6: 
        color_list.append('limegreen')
    else: 
        color_list.append('darkorange')   

我正在努力创建一个有效的循环以在以下节点内创建边(我已经检查并应用了很多解决方案,但我无法使用 for 循环来做到这一点)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,6)
G.add_edge(3,7)
G.add_edge(4,6)
G.add_edge(4,7)
G.add_edge(5,6)
     
#nx.draw(G, node_color = color_list, with_labels  =True)

pos = nx.spring_layout(G)

nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edges(G, pos, edge_color='black')

plt.show()

这是我得到的最终数字

有没有人可能有什么建议?让我知道这些错误发生在哪里。谢谢

您在绘制网络时忘记指定 node_color=color_list。 例如,您可以使用:nx.draw(G, pos, node_color=color_list,with_labels=True) 来绘制网络。然后您将得到以下结果:

另请注意,就目前而言,您永远不会在图表中获得颜色 limegreendarkorange,因为条件 node < 4node >= 4 已经分区节点集。