pythonnetworkx-根据值列表自动设置节点颜色

2024-10-02 18:15:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我用networkx生成了一个图

import netwokx as nx  
s = 5
G = nx.grid_graph(dim=[s,s])
nodes = list(G.nodes)
edges = list(G.edges)
p = []
for i in range(0, s):
    for j in range(0, s):
        p.append([i,j])
for i in range(0, len(nodes)):
    G.node[nodes[i]]['pos'] = p[i]

pos = {}
for i in range(0, len(nodes)):
        pos[nodes[i]] = p[i]

nx.draw(G, pos)

enter image description here

现在我想为0和{}之间的每个节点分配一个值

^{pr2}$

我想根据val列表为每个节点分配颜色,并绘制如图所示的here

enter image description here


Tags: inposimportnetworkxforlen节点as
2条回答

networkx.draw具有node_color, vmin, vmax and cmap参数:

cmap(Matplotlib colormap,可选(默认值=None))–节点映射强度的colormap

vmin,vmax(float,可选(默认值=None))–节点颜色贴图缩放的最小值和最大值

node_color(颜色字符串或浮点数组,(默认值='#1f78b4'))–节点颜色。可以是单色格式字符串,也可以是与nodelist长度相同的颜色序列。如果指定了数值,它们将使用cmap和vmin、vmax参数映射到颜色。看到了吗matplotlib.散点更多细节。

您可以在其中写入一个列表,这样您的节点将被着色(例如):

colors = [i/len(G.nodes) for i in range(len(G.nodes))]
...
...
nx.draw(G, pos, node_color=colors)

enter image description here

要设置节点属性,可以使用:

nx.set_node_attributes(G, val, 'val')

Networkx draw调用为draw_networkx_nodes,这需要一个cmap和颜色列表,因此您只需做如下操作:

^{pr2}$

相关问题 更多 >