在spring布局中更改networkx节点的颜色

1 投票
1 回答
1600 浏览
提问于 2025-04-16 16:47

我想知道怎么改变一些节点的颜色,但我不知道它们的位置。

我在StackOverflow上看到过一个链接,里面的答案是针对那些节点位置已经明确设置的情况。

但是假设我有一个这样的图:

   G = nx.Graph()
   for i in range(10):
      G.add_node(i)
   for i in range(9):
      G.add_edge(i,i+1)
   pos = nx.spring_layout(G)
   node_num = random.randint(0,10)

现在,如果我想随机选一个节点,把它的颜色改成蓝色,其他的都改成红色……我该怎么用draw_networkx函数的nodes_list属性来实现呢?这个函数是用来处理整数类型的节点。如果你能给出一个适用于任何类型节点名称的解决方案,那就更好了……

非常感谢!

1 个回答

1

这里有一些代码可能会对你有帮助。它会随机选择一个节点把它涂成蓝色,然后把其他的节点涂成红色。

import random
import matplotlib.pyplot as plt
import networkx as nx
G=nx.Graph()
G.add_edges_from([('a','b'),('b','d'),('c','e'),('b','e')])
pos=nx.spring_layout(G)
nodes=G.nodes()
random.shuffle(nodes)
blue=nodes.pop()
nx.draw_networkx_nodes(G,pos,nodelist=[blue],node_color='b')
nx.draw_networkx_nodes(G,pos,nodelist=nodes,node_color='r')
nx.draw_networkx_edges(G,pos)
plt.show()

撰写回答