2015-07-20 100 views
1

我正在创建一个网络X图,节点大小与节点相关。创建图形时,节点大小与传递给图形的大小列表不一致。谁能帮忙?下面是我使用的代码:Networkx节点大小

import networkx as nx 

G = nx.Graph() 
nodelist = [] 
edgelist = [] 
sizes = [] 
for i in Results[0]: 
    if i > 0.10 and i != 1: 
     Normnodesize = (i/Maxcs)*800 
     Findnode = np.where(Results[0]==i) 
     nodelist.append(str(Findnode[0][0])) 
     edgelist.append((0,str(Findnode[0][0]))) 
     sizes.append(int(Normnodesize)) 

G.add_nodes_from(nodelist) 
G.add_edges_from(edgelist) 

pos = nx.fruchterman_reingold_layout(G) 

nx.draw_networkx(G,pos,node_size=sizes) 

如果你看一下节点,边节点重量打印出来的样子:

16 (0, '16') 608 
    38 (0, '38') 732 
    55 (0, '55') 549 
    63 (0, '63') 800 
    66 (0, '66') 559 
    106 (0, '106') 693 
    117 (0, '117') 476 
    124 (0, '124') 672 
    130 (0, '130') 482 
    143 (0, '143') 518 

在列表中的节点尺寸与节点尺寸所描绘的是不一样的,我不明白为什么。

谢谢大家!

+0

你能提供再现您的问题一个自包含的例子吗? – aestrivex

回答

2

networkx将节点存储在字典中。当它绘制它们时,它基本上按照python给出的顺序查看键。无法保证您的权重与sizes的权重相同。

所以尝试:

nx.draw_networkx(G,pos,nodelist = nodelist, node_size=sizes)

+0

谢谢乔尔,这正是问题所在。很高兴知道未来networkx图的这一点信息 – Jenks