如何为 NetworkX 中的节点设置颜色?

我创建了我的图形,到目前为止一切看起来都很棒,但是我想在创建后更新我的节点的颜色。

我的目标是可视化 DFS,我将首先显示初始图形,然后颜色节点一步一步的 DFS 解决问题。

如果有人感兴趣,可以在 Github上获得示例代码

117089 次浏览

所有您需要的是指定一个颜色映射到每个节点,并将其发送到 nx.pull 函数。为了澄清,对于20个节点,我想把前10个用蓝色标记,其余的用绿色标记。守则如下:

G = nx.erdos_renyi_graph(20, 0.1)
color_map = []
for node in G:
if node < 10:
color_map.append('blue')
else:
color_map.append('green')
nx.draw(G, node_color=color_map, with_labels=True)
plt.show()

您将在所附的图像 < img src = “ https://i.stack.imgur.com/oZTPE.png”alt = “ enter image description here”> 中找到该图形。

请参阅 node_color参数:

nx.draw_networkx_nodes(G, pos, node_size=200, node_color='#00b4d9')

已经有答案了,但是你也可以这样做:

# define color map. user_node = red, book_nodes = green
color_map = ['red' if node == user_id else 'green' for node in G]
graph = nx.draw_networkx(G,pos, node_color=color_map) # node lables

在我的例子中,我有两组节点(from sklearn.model_selection import train_test_split)。我想改变每组的颜色(默认颜色是可怕的!).我花了很长时间才弄明白如何改变它,但是,Tensor 的基础是 numpy,而 Matplotlib 是 networkx图书馆的核心。所以..。

test=data.y
test=test.numpy()
test=test.astype(np.str_)
test[test == '0'] = '#C6442A'
test[test == '1'] = '#9E2AC6'


nx.draw(G, with_labels=True, node_color=test, node_size=400, font_color='whitesmoke')

长话短说: 转换张量与字符串类型的麻木数组,检查你的 HTML (https://htmlcolorcodes.com/)最好的十六进制颜色代码,你准备好了!