在 draw_networkx 可视化中突出显示节点而不更改节点颜色

Dav*_*uck 1 python matplotlib networkx

我正在使用 NetworkX 来可视化一个包含 > 1000 个节点的大图。作为可视化的一部分,我希望能够突出显示某些节点​​。

我已经看到了这个问题,并且知道 NetworkX 将允许您通过更改节点颜色来突出显示节点,如下所示:

import networkx as nx
import matplotlib.pyplot as plt
edges = [['A','B'], ['A','C'], ['A','D'], ['B','E'], ['B','F'], ['D','G'],['D','H'],['F','I'],['G','J'],['A','K']]
G = nx.Graph()
G.add_edges_from(edges)

colours = ['blue']*5 + ['red'] + ['blue']*5
nx.draw_networkx(G, font_size=16, node_color=colours)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但是,对于大量节点,我不得不显着减小节点大小,否则它只会显示为重叠节点的模糊云,因此更改节点颜色无效。

理想情况下,我想要做的是将标签字体颜色更改为,例如,所选节点的文本标签的红色。node_color然而,NetworkX 似乎只提供一个全局参数font_color来更改所有节点标签的颜色,它不会t 接受,例如font_color=colours。

如果有任何方法可以通过 NetworkX 或 Matplotlib 更改特定节点/节点组的字体颜色,或添加任何类型的标注,或以任何其他方式突出显示某些节点​​而不依赖于更改node_color?

war*_*ped 7

您可以在原始图的顶部绘制子图:

# generate node positions:
pos = nx.spring_layout(G)

# draw graph
nx.draw_networkx(G, pos=pos, font_size=16, node_color='blue', font_color='white')

# draw subgraph for highlights
nx.draw_networkx(G.subgraph('F'), pos=pos, font_size=16, node_color='red', font_color='green')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明