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

标签 python matplotlib networkx

我正在使用 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()

enter image description here

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

我理想的做法是将所选节点的文本标签的标签字体颜色更改为红色。但是,与 node_color 不同,NetworkX 似乎只提供全局参数font_color 更改所有节点标签的颜色,但它不会接受,例如font_color=颜色

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

最佳答案

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

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

enter image description here

关于python - 在draw_networkx可视化中突出显示节点而不更改节点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59220877/

相关文章:

python - 如何更改使用 mpl.to_bokeh 创建的 Bokeh 图上的工具?

python - 如何使用 twinx 并仍然获得方形图

python - "Bidirectional Dijkstra"来自 NetworkX

python - NetworkX - 计算断开连接图中的最大匹配

一些unicode字符的Python编码错误

python - 自定义 __getattr__ 返回其他对象属性

python - 如何以不同的增量减去 2 个单独文件的特定行

python - 使用networkX输出树结构

python - igraph python 检查顶点是否存在

python - 在字典中合并/求和字典