2014-02-17 59 views
0

我正在用networkx繪製大圖,並且當圖大時我遇到了問題。對於小圖,一切正常,但對於大圖(1k節點),分配顏色和大小似乎失敗。 這是有問題的代碼段使用matplotlib繪製大圖時節點大小和顏色的錯誤

H=nx.connected_component_subgraphs(G)[0] 
d=nx.degree(H) 
b=nx.eigenvector_centrality(H) 
pos2=nx.spring_layout(H,scale=2) 

labels={} 
colors={} 
dim={} 

for n in H.nodes(): 
    i=0 
    for v in b: 
     if v==n: 
      break 
     i+=1 
    colors[n]=b.values()[i] 
    j=0 
    for w in d: 
     if w==n: 
      break 
     j+=1 
    dim[n]=d.values()[j]*40 

    k=0 
    for z in range(2): 
     if n in sorted(b.items(), key=lambda x:x[1],reverse=True)[z]: 
      labels[n]=n 


nx.draw(H, 
      pos2, 
      with_labels=False, 
      node_size=dim.values(), 
      node_color=colors.values(), 
      cmap=plt.cm.Reds, 
      vmin=min(b.values()), 
      vmax=max(b.values()) 
) 

,因爲我沒有足夠的聲譽,我不能發表圖片,但是當我說,它沒有我的意思是(部分)低的連接節點是更大然後具有高連接性的節點,並且顏色也是如此。

想知道它是怎麼回事?

enter image description here enter image description here

+0

把它們放在一些地方,幷包括一個鏈接。高級用戶並將其編輯到您的帖子中。 – tacaswell

+0

這裏是小圖示例https://www.dropbox.com/s/sgwiop394cgik7j/ex1.png 和她的大變焦 https://www.dropbox.com/s/paustbt0wci75cl/ex2 .png – imabug

+0

所以SO似乎不喜歡下拉框鏈接..... – tacaswell

回答

0

傳遞關鍵字節點列表=你想要繪製的節點。然後使用相同的順序在列表中將顏色和大小設置爲node_color和node_size參數。

nodes = H.nodes() 

nx.draw(H, pos2, nodelist=nodes, 
     node_size = [dim[n] for n in nodes], 
     node_color= [colors[n] for n in nodes], 
     cmap=plt.cm.Reds, 
     vmin=min(b.values()), 
     vmax=max(b.values()), 
     with_labels=False 
) 
相關問題