簡體   English   中英

Networkx:具有許多節點的網絡

[英]Networkx: networks with many nodes

我有一個數據幀,大約有8,800行,我想用networkx生成一個網絡。 網絡生成數據框的基本結構如下所示:

df = pd.DataFrame({'id_emp':[13524791000109, 12053850000137, 4707821000113],
               'name_dep': ['DIONILSO MATEUS MARCON', 'JOSE AUGUSTO ROSA', 'LUCIO ANTONIO MOSQUINI'],
               'roi':[12, 15, 18]
              })

在我想要表示的網絡中,有兩種類型的節點:'id_emp'和'name_dep',並且在同一行上有每對這些值的邊。 因此,網絡將擁有17,600個節點。 邊緣將具有基於roi柱的權重。 創建網絡的代碼如下:

import networkx as nx
G = nx.Graph()
G.add_nodes_from(df['id_emp'], type_='id_emp')
for node in G.nodes:
    G.nodes[node]['fornecedor'] = df[df['id_emp'] == node]['fornecedor'].values[0]

G.add_nodes_from(df['name_dep'], type_='name_dep')

G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'roi']].values)

colors = ['#0000FF' if G.nodes[n]['type_'] == 'id_emp' else '#FF0000' for n in G.nodes]

edge_width = [a[2]['weight'] for a in G.edges(data=True)]

plt.figure(figsize=(7.5,7.5))

nx.draw(G, pos = nx.kamada_kawai_layout(G), node_size = 100, 
node_color = colors, with_labels=False, edge_cmap=plt.cm.Blues)
nx.draw_networkx_edges(G,pos=nx.kamada_kawai_layout(G),width=edge_width)
plt.axis('off')
plt.show()

具有原始數據幀的網絡如下所示:

在此輸入圖像描述

我的問題如下:使用networkx繪制具有此數量節點的網絡是否合適? 如果是,我該如何改進網絡視圖? 如果沒有,我該怎么做才能改善網絡視圖?

我認為這部分是因為你的節點大小太大,這使得整個圖像看起來很混亂。 您可以將其從100更改為更小的值,並查看它是否符合您的需要。

此外,您可以檢查是否有更大的節點布局

嘗試使用此代碼進行布局:

[x for x in nx.__dir__() if x.endswith('_layout')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM