繁体   English   中英

NetworkX 显示错误 colors

[英]NetworkX shows wrong colors

我正在尝试使用 plot 使用 colors 的带有 networkx 的简单网络,但是 colors 我给出的节点未显示在图表上...

import networkx as nx
G = nx.Graph()

G.add_nodes_from([
    (4, {"color": "red"}),
    (5, {"color": "green"}),
])

nx.draw_networkx(G)

绘制此图:

在此处输入图像描述

为什么这些节点不是我分配给它们的颜色?


我正在尝试从https://networkx.org/documentation/stable/tutorial.html重现示例

文档中的示例具有误导性 - 它甚至没有显示带有 colors 的图像。

{"color": "red"}不用于更改颜色,仅在节点中保留额外信息。 您可以使用{"first name": "James", "last name": "Bond", "number": "007"}得到相同的结果

要设置颜色,您必须在绘制它们时使用列表

nx.draw(G, node_color=['red', 'green', 'blue'], with_labels=True)

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()

G.add_nodes_from([
    (4, {"color": "red"}),
    (5, {"color": "green"}),
    (7, {"first name": "James", "last name": "Bond", "number": "007"}),
])

nx.draw(G, node_color=['red', 'green', 'blue'], with_labels=True)
plt.show()

或者您将不得不使用for -loop 使用来自节点的数据创建列表

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()

G.add_nodes_from([
    1,
    2,
    (4, {"color": "red"}),
    (5, {"color": "green"}),
    (7, {"first name": "James", "last name": "Bond", "number": "007"}),
    8,
    9,
   ('Hello', {"color": "red"}),
])

#color_map = ['red', 'green', 'blue']
color_map = []

for node in G:
    print(G.nodes[node])
    if 'color' in G.nodes[node]:
        color_map.append( G.nodes[node]['color'] )
    else: 
        color_map.append('blue')    
    
nx.draw(G, node_color=color_map, with_labels=True)
plt.show()

在此处输入图像描述

尝试:

import networkx as nx
G = nx.Graph()

G.add_nodes_from([
    (4, {"color": "red"}),
    (5, {"color": "green"}),
])

nx.draw_networkx(G, node_color=[i['color'] for i in dict(G.nodes(data=True)).values()])

Output:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM