简体   繁体   中英

Networkx node sizes

I am creating a networkX graph with the node sizes correlating to nodes. When I create the graph, the node sizes don't correspond correctly with the size list passed to the graph. Can anyone help? Here is the code I'm using:

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)

If you look at the nodes, edges, node weight the print out looks like:

   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

The node sizes in the list and the node sizes depicted are not the same and I can't figure out why.

Thanks everyone!

networkx stores nodes in a dict. When it draws them, it basically looks at the keys in the order python gives. There's no guarantee that's the same order that you've put their weights into sizes .

So try:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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