【问题标题】:Highlight a node in draw_networkx visualisation without changing node colour在 draw_networkx 可视化中突出显示节点而不更改节点颜色
【发布时间】:2020-03-31 21:41:21
【问题描述】:

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

我见过this question 并且知道 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()

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

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

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

【问题讨论】:

    标签: python matplotlib networkx


    【解决方案1】:

    您可以在原始图上绘制子图:

    # 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 2023-03-12
      • 1970-01-01
      • 2012-11-24
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多